【问题标题】:Manuel segue 'Show' does not call ViedDidload when returning to parent viewController?当返回父视图控制器时,Manuel segue 'Show' 不调用 ViedDidload?
【发布时间】:2023-04-09 02:35:02
【问题描述】:

我有一个包含 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。
  • 有效!非常感谢。

标签: swift xcode segue viewdidload


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多