我正在尝试将参数从一个视图控制器传递到另一个视图控制器,但是应用程序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'
答案 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
。