【问题标题】:swift access property of previous viewcontroller in navigation stack [duplicate]导航堆栈中先前视图控制器的快速访问属性[重复]
【发布时间】:2015-04-09 04:06:51
【问题描述】:

我正在尝试访问导航堆栈中的前一个视图控制器。我想在弹出标签之前设置标签的文本属性。它在函数的第二行之后崩溃。 谢谢你的帮助。

func goBack(){
    let i = (navigationController?.viewControllers.count)! - 1
    let itemViewController = navigationController?.viewControllers[i] as     ItemViewController
    itemViewController.typeValueLbl.text = itemName
    navigationController?.popViewControllerAnimated(true)
}

【问题讨论】:

    标签: ios swift uiviewcontroller uinavigationcontroller


    【解决方案1】:

    您正在尝试设置以前控制器的属性。

    理想的方法是使用协议和委托。

    在您的 PUSHED 类中编写一个协议并声明一个委托属性。

    当您的 ItemViewController 推送此类时,将委托设置为 self。

    然后您可以在 goBack 方法中调用委托方法来设置您的标签文本。

    学习 Swift 中的协议和委托refer documentation

    【讨论】:

    • 我以前做过。我早该想到的。
    • 感谢您的快速回复。
    【解决方案2】:

    来自this线程的引用

    这是接受的答案的实现:

    - (UIViewController *)backViewController {
    NSInteger numberOfViewControllers = self.navigationController.viewControllers.count;
    
    if (numberOfViewControllers < 2)
        return nil;
    else
        return [self.navigationController.viewControllers objectAtIndex:numberOfViewControllers - 2]; }
    

    【讨论】:

      猜你喜欢
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2012-05-04
      • 1970-01-01
      相关资源
      最近更新 更多