我知道有很多关于此的帖子,但是我已经尝试了所有方法,但没有任何效果。因此,我尝试将一个对象在两个视图控制器之间传递给嵌入在导航项中的DBKIngredientsViewController。我有一个标识符为“showIngredientsSegue”的推送脚本到DBKIngredientsViewController。我收到的错误消息是:
'NSInvalidArgumentException',原因:'-[DBKIngredientsViewController topViewController]:无法识别的选择器已发送到实例0x8a92450'
我所选择的视图控制器是嵌入在导航控制器中的,我认为这很混乱。这是怎么回事?需要明确的是,DBKViewController已经嵌入在导航控制器中,而推推功能则是在推动DBKViewController而不是将其嵌入的导航控制器。我尝试了不同的方法,但似乎没有任何效果。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"showIngredientsSegue"]){
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
DBKIngredientsViewController *controller = (DBKIngredientsViewController *)navController.topViewController;
controller.targetRecipe = selectedRecipe;
}
}
最佳答案
您确定segue.destinationViewController
是UINavigationController
吗?看来这只是一个DBKIngredientsViewController
,所以应该可以使用:
DBKIngredientsViewController *controller = (DBKIngredientsViewController *)segue.destinationViewController
另外,如果
DBKViewController
已经具有导航控制器,那么如果您要推送DBKIngredientsViewController
,则不需要第二个。如果您要模态显示DBKIngredientsViewController
,则只需要第二个。关于ios - 使用Storyboard Segue iOS将数据传递到 View Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19739037/