在 RelationshipSegue 之后调用 ViewController 中的函数
Call function in ViewController after RelationshipSegue
我在 UITabbarController
中嵌入了多个 UIViewController
。
这些由关系 Segues 连接。
起点,VC1
最初加载数据,然后处理到 "detail" 视图。
每当我更改选项卡并返回 VC1
时,应用程序都会卡住,因为未调用 viewDidLoad
。
有没有办法在每次 VC1
被跳转到时触发一个函数?
the application gets stuck, as viewDidLoad is not called
应用程序没有卡住。它工作得很好。 viewDidLoad
在视图控制器被 创建 并且 加载 其视图时被调用。这只会在视图控制器的生命周期中发生一次。当您离开视图控制器并 返回 时,它仍然存在(即它不是从头开始创建的),因此自然 viewDidLoad
不会被调用。
如果您的目标是了解标签栏控制器正在切换到 VC1 的事实,请为标签栏控制器提供委托并实施 tabBarController(_:didSelect:) 或类似的。
更好的是,配置一些东西,这样就不需要这样做了。如果两个视图控制器都访问了公共数据,那么构建事物以便视图控制器将新数据 up 发送到数据控制器并且数据控制器广播更改消息 down 到所有需要知道这个的视图控制器。
我在 UITabbarController
中嵌入了多个 UIViewController
。
这些由关系 Segues 连接。
起点,VC1
最初加载数据,然后处理到 "detail" 视图。
每当我更改选项卡并返回 VC1
时,应用程序都会卡住,因为未调用 viewDidLoad
。
有没有办法在每次 VC1
被跳转到时触发一个函数?
the application gets stuck, as viewDidLoad is not called
应用程序没有卡住。它工作得很好。 viewDidLoad
在视图控制器被 创建 并且 加载 其视图时被调用。这只会在视图控制器的生命周期中发生一次。当您离开视图控制器并 返回 时,它仍然存在(即它不是从头开始创建的),因此自然 viewDidLoad
不会被调用。
如果您的目标是了解标签栏控制器正在切换到 VC1 的事实,请为标签栏控制器提供委托并实施 tabBarController(_:didSelect:) 或类似的。
更好的是,配置一些东西,这样就不需要这样做了。如果两个视图控制器都访问了公共数据,那么构建事物以便视图控制器将新数据 up 发送到数据控制器并且数据控制器广播更改消息 down 到所有需要知道这个的视图控制器。