当返回父视图控制器时,Manuel segue 'Show' 不调用 ViedDidload?
Posted
技术标签:
【中文标题】当返回父视图控制器时,Manuel segue \'Show\' 不调用 ViedDidload?【英文标题】:Manuel segue 'Show' does not call ViedDidload when returning to parent viewController?当返回父视图控制器时,Manuel segue 'Show' 不调用 ViedDidload? 【发布时间】:2016-08-15 13:06:08 【问题描述】:我有一个包含 UITableViewController 的 viewController。这个 UITableViewController 由一个数组填充。当用户按下填充的单元格时,他们将 segue 设置为“Manuel Segue:Show”,这将创建一个后退按钮 UINavigation 栏项目。在这个 viewController 中,用户可以将 Items 添加到填充父 UITableViewController 的数组中。问题是,当我使用 UINavigationbarItem 后退时,它不会在 UITableViewController 上调用 viewDidload,因此不会更新 UIViewTableCells。我必须关闭应用程序才能使其调用 viewDidload... 从 Manuel segue 节目返回时,如何让它调用 ViewDidload?感谢所有帮助。
【问题讨论】:
viewWillAppear
将被调用。从那里触发表重新加载。
应用启动时是否与ViewDidLoad冲突?
viewWillAppear
将在viewDidLoad
第一次之后被调用。如果您想避免第一次调用reload
,您可以在viewDidLoad
中设置一个属性,例如viewJustLoaded = true
,并在这种情况下跳过viewWillAppear
中的reload
。不要忘记将属性设置为 false。
有效!非常感谢。
【参考方案1】:
当上面显示另一个视图控制器时,推送视图控制器不会被卸载。由于 viewDidLoad: 在视图生命周期中只被调用一次,所以当解开 segue 时不会调用它。
在 viewWillAppear: 或 viewDidAppear: 中更新您的 tableview 会导致在显示此视图时调用它。
viewWillAppear 如果您不想在不需要异步加载数据时向用户显示重新加载的表,可能会更好。
在此处阅读有关 ios 视图控制器生命周期的更多信息: https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson4.html#//apple_ref/doc/uid/TP40015214-CH6-SW3
【讨论】:
以上是关于当返回父视图控制器时,Manuel segue 'Show' 不调用 ViedDidload?的主要内容,如果未能解决你的问题,请参考以下文章
在父视图控制器上注册一个 Segue 以在子视图控制器上使用
(Swift)当多个视图控制器导致相同的视图时展开 segue?