簡體   English   中英

使用包含另一個視圖的Navigation Controller在Segue中設置屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM