如果从其他视图控制器按回,则重新加载并不重新加载。迅速

问题描述 投票:6回答:4

前三个答案可以解决我的问题。很难选择哪一个是最好的。因此,我只选择第一个回答我问题的人。对不起,业余爱好者和iOS爱好者。谢谢您的帮助。我很感激。

enter image description here

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爱好者。谢谢...

ios swift back-button viewdidload viewdidappear
4个回答
2
投票

如果显示vc2是由vc1执行的,并且始终确保使vc1中的数据无效,则可以执行以下操作:


3
投票

这里是我几天前回答的问题的link。使用导航控制器委托来处理后退按钮。在您的第二个视图控制器中,将委托设置为self,然后在按下“后退”按钮时重新加载表格视图。


1
投票

您可以轻松地使用通知方法。


0
投票

我有相同的问题怎么办?

© www.soinside.com 2019 - 2024. All rights reserved.