iOS - 从AppDelegate导航到UITableViewController

时间:2015-01-20 10:55:29

标签: ios xcode appdelegate

我在获得远程通知后尝试导航到某些ViewController 它在此代码之后崩溃任何帮助请 我的故事板就像这样 SWRevealViewController - > NavViewController - >的UIViewController 我想要达到这个UIViewController

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{

UIStoryboard *storyboard =[UIStoryboard storyboardWithName:@"Main" bundle:nil];
// my ViewController I want navigate to UITableViewController call home_tableview

    Home_tableView *home =[storyboard instantiateViewControllerWithIdentifier:@"home_view"];
    [(UINavigationController *)self.window.rootViewController pushViewController:home animated:NO];

}

我得到的错误

2015-01-20 13:04:14.379 SchoolLink[1304:416727] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:(0x25bd749f 0x3338dc8b 0x25af30b3 0x2909d06b 0x11d48f 0x29099d0f 0x29099a7d 0x2909f953 0x2910643d 0x111dbd 0x2930286b 0x292fa54d 0x2c3680d1 0x25b9dd7d 0x25b9d041 0x25b9bb7b 0x25ae93c1 0x25ae91d3 0x2cee70a9 0x290f8fa1 0x12b7ad 0x3390daaf)
libc++abi.dylib: terminating with 

3 个答案:

答案 0 :(得分:1)

我认为你的故事板中有UINavigationController嵌入了你的视图控制器。

如果是这种情况,您的代码应该没有任何问题。

我在一个新项目中测试了它,它有两个视图控制器和一个导航控制器作为初始视图,一切都很好。

如果您确定所有的情节提要标识符都正确,并且initial View中的Interface BuilderUINavigationController嵌入了您的所有ViewControllers,那么你在其他地方遇到了一些问题,而不是你粘贴的代码。

由于您的错误与insertObjectAtIndex:有关,我相信有一些数据可以在应用程序的正常工作流程中实现您的UITableViewController(当它转向它时)以及当您尝试将UITableView控制器呈现为干净状态时从通知中,数据丢失,因此崩溃。

检查您尝试将对象添加到给定索引处的数组的位置。

问题出在接收通知的类中(我猜这是你的AppDelegate类),要么在UITableViewController类中,要么在初始化的某个地方。

答案 1 :(得分:0)

尝试

Home_tableView *home =[storyboard instantiateViewControllerWithIdentifier:@"home_view"];
[self.window setRootViewController:home]
[self.window makeKeyAndVisible];

答案 2 :(得分:0)

请试试这个:

UIStoryboard *storyboard =[UIStoryboard storyboardWithName:@"Main" bundle:nil];
Home_tableView*svc = [storyboard instantiateViewControllerWithIdentifier:@"home_view"]; 
// Configure the new view controller here.   
[self presentViewController:svc animated:YES completion:nil];