崩溃将参数从一个viewcontroller传递到另一个

时间:2014-01-19 10:26:49

标签: ios iphone objective-c viewcontroller

我正在尝试将参数从一个视图控制器传递到另一个视图控制器,但是应用程序crashes有例外。

我的代码是:

SelectedItemViewController *nextView = [storyboard instantiateViewControllerWithIdentifier:@"SelectedItemViewID"];

nextView.m_selectedItemId = [NSNumber numberWithInt:777];

[self presentViewController:nextView animated:YES completion:NULL];

我的筹码中有以下内容:

* 因未捕获的异常“NSInvalidArgumentException', reason: '-[UINavigationController setM_selectedItemId:]: unrecognized selector sent to instance 0x9c765d0'

而终止应用

3 个答案:

答案 0 :(得分:3)

在故事板中,标识为SelectedItemViewID的视图控制器是导航控制器,而不是SelectedItemViewController。因此,在设置m_selectedItemId之前,您应该访问导航控制器根视图控制器(应该是您的SelectedItemViewController)。

答案 1 :(得分:2)

我在这里找到了解决方案:instantiateViewControllerWithIdentifier and pass data

如果您想通过导航控制器将参数传递给视图控制器,应该怎么做:

UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"SelectedItemViewID"];

SelectedItemViewController *nextView = navigationController.viewControllers[0];

nextView.m_selectedItemId = [NSNumber numberWithInt:777];

[self presentViewController:navigationController animated:YES completion:NULL];

答案 2 :(得分:0)

在故事板中选择视图控制器时,类是否设置为SelectedItemViewController

显然,你似乎在SelectedItemViewController上有@property ... m_selectedItemId(或至少是setter方法setM_selectedItemId),否则你的代码甚至都不会编译。但似乎[storyboard instantiateViewControllerWithIdentifier:@"SelectedItemViewID"]并没有真正返回预期的SelectedItemViewController。因此,我觉得您忘记在故事板中将正确的班级名称设置为SelectedItemViewController