Obj-c:Segue crash ..导航控制器在中间

时间:2017-07-18 14:10:50

标签: ios objective-c

我不明白为什么这个segue崩溃。enter image description here

在第一节课中,我有:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    NSString *string = [feeds[indexPath.row] objectForKey:@"link"];
    [[segue destinationViewController] setUrl:string];
}
}
  

但是

如果我在中间移除导航控制器,则segue工作正常。为什么呢?

2 个答案:

答案 0 :(得分:1)

错误是因为 setUrl 是在Last View Controller中定义的。记住它是 viewcontroller实例。当导航控制器位于中间时,[segue destinationViewController]提供 NavigationController实例,其中setURL变量将不可用。

如果你希望NavigationController在那里,你必须将其关闭。只需这样做。

UINavigationController *navControl = (UINavigationController *)[segue destinationViewController];
let vc = navControl.rootViewController;
vc.setUrl = string;

答案 1 :(得分:0)

试试这个:

UINavigationController *navigation = [segue destinationViewController];
YourViewController * controller = navigation.rootViewController
[controller setUrl:string];