3

我知道有很多关于这个的帖子,但我已经尝试了一切,但没有任何效果。因此,我尝试将两个视图控制器之间的对象传递给嵌入在导航项中的 DBKIngredientsViewController。我有一个带有标识符“showIngredientsSegue”的推送序列到 DBKIngredientsViewController。我收到的错误信息是:

'NSInvalidArgumentException',原因:'-[DBKIngredientsViewController topViewController]:无法识别的选择器发送到实例 0x8a92450'

我正在使用的视图控制器嵌入在导航控制器中,我认为它搞砸了。这有什么办法?需要明确的是,DBKViewController 已经嵌入到导航控制器中,并且 push segue 推送的是 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;
    }
}

IMG

4

1 回答 1

2

你确定那segue.destinationViewController是一个UINavigationController?看起来它只是一个DBKIngredientsViewController所以这应该工作:

DBKIngredientsViewController *controller = (DBKIngredientsViewController *)segue.destinationViewController

此外,如果DBKViewController已经有一个导航控制器,那么如果您正在推动,则不需要第二个DBKIngredientsViewController。如果您以模态方式显示,则只需要第二个DBKIngredientsViewController

于 2013-11-02T04:50:59.367 回答