0

一起嗨

我在主视图上使用 AppDelegate 中的一些参数调用 void。如果收到推送通知,则会执行此操作:

MainViewController *mainView = [[MainViewController alloc] init];
[mainView showPushView:pushDataObject];

调用的 void @MainView 做一些数据操作,然后它应该加载 pushView:

- (void)showPushView: (PFObject *)pushDataObject {
    NSLog(@"Push Data object transfered %@", pushDataObject);
    pushItem = pushDataObject;
    //All working fine to this point 
    [self performSegueWithIdentifier:@"showPushObject" sender:self];
}

现在的问题是应用程序因[self performSegueWithIdentifier:@"showPushObject" sender:self];以下错误而崩溃:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
'Receiver (<MainViewController: 0x145b80e0>) has no segue with identifier 'showPushObject''
*** First throw call stack:
(0x2e51fe83 0x3887c6c7 0x30f656d9 0xbeb11 0xb2a23 0x1745f7 0x38d610c3 0x38d610af 0x38d639a9 0x2e4ea5b1 0x2e4e8e7d 0x2e453471 0x2e453253 0x3318d2eb 0x30d08845 0xafecd 0x38d75ab7)
libc++abi.dylib: terminating with uncaught exception of type NSException

我认为有问题,因为我从 AppDelegate 调用了 void,对吗?

那些人知道解决这个问题的方法吗?

非常感谢!来自德国的问候:)

PS如果我[self performSegueWithIdentifier:@"showPushObject" sender:self];用MainViewController上的按钮或其他东西打电话一切正常......:/

4

2 回答 2

0

你的问题是这一行:

MainViewController *mainView = [[MainViewController alloc] init];

因为这意味着该mainView实例没有情节提要(因此它不能有任何转场)。

当您从按钮运行它时,控制器实例必须是从情节提要创建的。

因此,要修复,加载情节提要并mainView从中实例化。然后segue将起作用。


UIStoryboard *storyboard4Inch = [UIStoryboard storyboardWithName:@"Storyboard4Inch" bundle:nil];
UIViewController *mainViewController = [storyboard4Inch instantiateViewControllerWithIdentifier:@"MainViewController"];
[mainViewController showPushView:pushDataObject];
于 2013-11-07T23:24:46.407 回答
0

为了使 segue 工作,您需要在以这种方式启动时将情节提要加载到 mainView 中。尝试这样的事情:

self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *firstViewController = [storyboard instantiateViewControllerWithIdentifier:@"kYourMainViewControllerIdentifier"];
self.window.rootViewController = firstViewController;
[self.window makeKeyAndVisible];

请记住为您的根视图控制器提供一个标识符并在这段代码中更改它。

于 2013-11-07T23:34:11.090 回答