sam24
sam24

Reputation: 99

App Delegate call for Apple Push Notification doesn't present viewcontroller

I have embedded apple push notifications to my app. When a notification is popped, I get an alert view and when clicked on view, I navigate to a Details controller. But, after clicking on the view button, it does not do anything and it freezes the application. Here's my code to open details in alert view click:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
DetailsViewController *list = [[DetailsViewController alloc]initWithNibName:@"Details" bundle:nil];

RearTableViewController *rearView = [[RearTableViewController alloc] init];
UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:list];
UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearView];

SWRevealViewController *mainRevealController = [[SWRevealViewController alloc]
                                                initWithRearViewController:rearNavigationController frontViewController:frontNavigationController];

mainRevealController.delegate = self;
[self.window.rootViewController presentViewController:mainRevealController animated:YES completion:nil];
[self.window makeKeyAndVisible];

Thanks in advance!

Upvotes: 0

Views: 62

Answers (2)

Vishnu Kumar. S
Vishnu Kumar. S

Reputation: 1837

Remove the following code.

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

No need to allocate the window once again. If you do so, you have to set the rootViewController again.

Upvotes: 0

shivam
shivam

Reputation: 1140

//Don't realloc self.window.
//self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
DetailsViewController *list = [[DetailsViewController alloc]initWithNibName:@"Details" bundle:nil];


//Alloc this VC with nib name like initWithNibNamed:bundle:
RearTableViewController *rearView = [[RearTableViewController alloc]initWithNibName:@"RearTableViewController" bundle:nil];
    UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:list];
UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearView];

SWRevealViewController *mainRevealController = [[SWRevealViewController alloc]
                                                initWithRearViewController:rearNavigationController frontViewController:frontNavigationController];

mainRevealController.delegate = self;
if(self.window.rootViewController){
      [self.window.rootViewController presentViewController:mainRevealController animated:YES completion:nil];
}
else{
     self.window.rootViewController = mainRevealController;
}
  [self.window makeKeyAndVisible];

Hope it will work.

Upvotes: 1

Related Questions