34 objective-c uinavigationcontroller ios segue
我试图在我的segue中设置一个属性时遇到了崩溃.这是一个UIView将属性传递给一个导航控制器,它有一个TableView作为它的根视图.它应该转到我的TableViewController,但它看起来像是被NavigationController截获并抛出一个无法识别的选择器错误.
Segue公司:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showItems"]) {
ShowItemsTableViewController *destinationViewController = [segue destinationViewController];
[destinationViewController setItems:[self itemsFromCoreData]];
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
-[UINavigationController setItems:]: unrecognized selector sent to instance 0x10920c840
这里发生了什么?NavigationController没有与之关联的类,它只是在故事板中并以模态方式出现.如果我将故事板中的segue设置为直接转到视图而不是NavigationController,它可以工作,但我真的需要导航那里.我该如何解决这个问题?
Kam*_*ros 74
由于目标视图控制器实际上是导航控制器,因此请尝试访问根视图,如下所示:
UINavigationController *navController = [segue destinationViewController];
ShowItemsTableViewController *SITViewController = (ShowItemsTableViewController *)([navController viewControllers][0]);
[SITViewController setItems:[self itemsFromCoreData]];
Run Code Online (Sandbox Code Playgroud)
对于Swift:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "segueShowNavigation" {
var DestViewController = segue.destinationViewController as! UINavigationController
let targetController = DestViewController.topViewController as! ReceiveViewController
}
}
Run Code Online (Sandbox Code Playgroud)
从UINavigationController获取topViewController:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showItems"]) {
UINavigationController *navigationController = segue.destinationViewController;
ShowItemsTableViewController *showItemsTVC = (ShowItemsTableViewController * )navigationController.topViewController;
showItemsTVC.items = [self itemsFromCoreData];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20193 次 |
| 最近记录: |