当用户点击其他标签时,他们可以调用的功能会被触发吗?例如:我使用viewwillappear&加载了viewdidload,但是我可以在退出时使用什么功能?
答案 0 :(得分:1)
UITabBarController有一个委托(UITabBarControllerDelegate),它接收消息,告诉你会发生什么(例如tabBarController:shouldSelectViewController:
)以及发生了什么(例如tabBarController:didSelectViewController:
)。
您的视图控制器也会获得viewWillDisappear:
,但这并不能区分这种情况(即可能由于其他原因而发生)。
答案 1 :(得分:1)
实施UITabBarControllerDelegate
方法shouldSelectViewController
。
3:实施方法shouldSelectViewController
:
extension MyClass: UITabBarControllerDelegate {
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
if let myController = viewController as? MyClass {
// do something
}
return true
}
答案 2 :(得分:1)
正如其他答案所说,将您已设置为tabBarController
的类中的delegate
委托方法定义到该tabBarController。选择tabItem
时将调用此方法。此方法具有名为viewController
的参数,这是您正在选择的参数。 selectedViewController
的{{1}}属性具有您要离开的先前选择的视图控制器(例如,将要消失的视图控制器)。
:
tabBarController
在斯威夫特:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if [tabBarController.selectedViewController isKindOfClass:[YourViewController class]] {
// do something you want to do on your viewcontroller, where you are leaving from.
YourViewController *yourViewController = (YourViewController *)tabBarController.selectedViewController;
[yourViewController doSomething];
}
return YES
}