这就是我现在的情况。我只想在用户“发送”帖子后重新加载表格。现在发生的事情是,每次主视图 Controller 变为事件状态时,它都会重新加载信息。这会导致一些问题,因为当用户返回到所述主视图 Controller 时会失去位置。
进一步分解它。我有两个主要的风投。包含帖子的主页和“创建帖子”页面。我想做的是,一旦用户在“创建帖子”页面上点击发送,就重新加载主表。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
skip = 0
self.loadObjects()
}
这段代码目前会在主页激活后重新加载信息,是的,它可以工作,但就像我提到的,如果用户向下滚动并从主页移动,一旦他们返回,他们的位置就会丢失。
重申一下。我想让 self.loadobjects() 只有在用户在“创建帖子” View Controller 上点击“发送”时才会被调用。
最佳答案
有两种标准方法可以做到这一点:通知和引用(或委托(delegate))。由于我认为通知是此类任务的“正确”方式,因此我将展示:
在按钮的操作方法中(用户按下“发送”按钮时调用的代码):
NSNotificationCenter.defaultCenter().postNotificationName("theyPressedTheButton", object: nil)
然后在具有 TableView 的 View Controller 的 viewDidLoad
方法中:
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("someMethodinThisClass:"), name: "theyPressedTheButton", object: nil)
然后在类(class)的某个地方
fun someMethodinThisClass(notification : NSNotification)
在具有 tableview 的类的 deinint
方法中,您需要放置此代码,以免泄漏
NSNotificationCenter.defaultCenter().removeObserver(self, name: "theyPressedTheButton", object: nil)
最后,在您的“someMethod”函数中,您可以重新加载 tableview 数据或您希望发生的任何其他事情。如果您遇到用户按下按钮时未加载 View 的情况,则没有任何危害。您将发布通知,没有人会听到。
关于ios - 只有在不同的 View Controller 上触发了某个 Action 后,我才能重新加载表格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32261071/