我正在尝试访问导航堆栈中的上一个viewcontroller。我想在回弹之前设置标签的文本属性。它在函数中的第二行之后崩溃。 谢谢你的帮助。
func goBack(){
let i = (navigationController?.viewControllers.count)! - 1
let itemViewController = navigationController?.viewControllers[i] as ItemViewController
itemViewController.typeValueLbl.text = itemName
navigationController?.popViewControllerAnimated(true)
}
答案 0 :(得分:1)
您正在尝试设置之前控制器的属性。
执行此操作的理想方法是使用协议和代理。
在PUSHED类中编写一个协议并声明一个委托属性。
当你的ItemViewController推送这个类时,将委托设置为self。
然后你可以在goBack方法中调用设置标签文本的委托方法。
在Swift中学习协议和代理refer documentation
答案 1 :(得分:0)
来自this主题
的引用以下是接受答案的实施:
- (UIViewController *)backViewController { NSInteger numberOfViewControllers = self.navigationController.viewControllers.count; if (numberOfViewControllers < 2) return nil; else return [self.navigationController.viewControllers objectAtIndex:numberOfViewControllers - 2]; }