前三个答案可以解决我的问题。很难选择哪一个是最好的。因此,我只选择第一个回答我问题的人。对不起,业余爱好者和iOS爱好者。谢谢您的帮助。我很感激。
ViewController 1具有表视图。
我的问题是,仅当我从视图控制器2单击返回时,才重新加载表视图,而如果我从视图控制器3单击返回,则不重新加载表视图。
现在,我的后退按钮代码是
@IBAction func backButtonTapped(sender: AnyObject) { self.dismissViewControllerAnimated(true, completion: nil) }
在视图控制器1中。我知道将从视图控制器2或3中重新加载表视图
override func viewDidAppear(animated: Bool) { loadTable() }
[我试图将loadTable()放入viewDidLoad中,并尝试在视图控制器2中为后退按钮编写以下代码。但是,它不起作用。
let storyboard = UIStoryboard(name: "Main", bundle: nil) let controller = storyboard.instantiateViewControllerWithIdentifier("UserHomePageViewController") as! UserHomePageViewController controller.viewDidLoad()
任何建议我应该怎么做?谢谢您的帮助。
编辑:
我认为这是一种更简单的方法,但是仍然无法如我所愿。我猜这是因为viewDidAppear是在调用reloadTableBool之前执行的。正确?有什么办法可以解决?谢谢。您的帮助将不胜感激。
class 2ViewController @IBAction func backButtonTapped(sender: AnyObject) { let storyboard = UIStoryboard(name: "Main", bundle: nil) let controller = storyboard.instantiateViewControllerWithIdentifier("1ViewController") as! 1ViewController print("viewcontroller2 before call: \(controller.reloadTableBool)") controller.reloadTableBool = false print("viewcontroller2 after call: \(controller.reloadTableBool)") self.dismissViewControllerAnimated(true, completion: nil) } class 1ViewController var reloadTableBool = true override func viewDidAppear(animated: Bool) { print("viewcontroller1: \(reloadTableBool)") if reloadTableBool == true { loadTable() } }
当我单击视图控制器2时,它会打印
viewcontroller2 before call: true
viewcontroller2 after call: false
viewcontroller1: true
前三个答案可以解决我的问题。很难选择哪一个是最好的。因此,我只选择第一个回答我问题的人。对不起,业余爱好者和iOS爱好者。谢谢...
如果显示vc2是由vc1执行的,并且始终确保使vc1中的数据无效,则可以执行以下操作:
这里是我几天前回答的问题的link。使用导航控制器委托来处理后退按钮。在您的第二个视图控制器中,将委托设置为self,然后在按下“后退”按钮时重新加载表格视图。
您可以轻松地使用通知方法。
我有相同的问题怎么办?