[英]Setting a property in a segue with Navigation Controller containing another view
嘗試在segue中設置屬性時發生崩潰。 這是一個UIView,它將屬性傳遞給導航控制器,該導航控制器具有TableView作為其根視圖。 它應該去我的TableViewController,但是看起來它被NavigationNavigator攔截並拋出無法識別的選擇器錯誤。
塞古:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showItems"]) {
ShowItemsTableViewController *destinationViewController = [segue destinationViewController];
[destinationViewController setItems:[self itemsFromCoreData]];
}
}
錯誤:
-[UINavigationController setItems:]: unrecognized selector sent to instance 0x10920c840
這里發生了什么? NavigationController沒有與之關聯的類,它只是在情節提要中並且以模態出現。 如果我在情節提要中將segue設置為直接進入視圖,而不是NavigationController,則它起作用,但是我確實需要在那里導航。 我該如何解決?
由於目標視圖控制器實際上是導航控制器,因此請嘗試訪問根視圖,如下所示:
UINavigationController *navController = [segue destinationViewController];
ShowItemsTableViewController *SITViewController = (ShowItemsTableViewController *)([navController viewControllers][0]);
[SITViewController setItems:[self itemsFromCoreData]];
對於Swift:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "segueShowNavigation" {
var DestViewController = segue.destinationViewController as! UINavigationController
let targetController = DestViewController.topViewController as! ReceiveViewController
}
}
從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];
}
}
在“准備開始”中查看視圖控制器類-它是nav控制器。 將其強制轉換為該類,然后您可以要求其提供其頂部視圖控制器來獲得所需的視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.