在第一节课中,我有:
- (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工作正常。为什么呢?
答案 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];