gpt4 book ai didi

iphone - 选择 tabview 时获取正确的 UIViewController 实例 - IOS

转载 作者:行者123 更新时间:2023-11-28 22:32:59 26 4
gpt4 key购买 nike

我的应用程序中的 tabview 有很多问题。我的问题是我在标签栏中间使用自定义 UIButton,然后在更改索引时手动调用 UITabBarControllerDelegatedidSelectViewController 委托(delegate)方法。

问题是,当我想检查已选择哪个 viewController 时,我没有获得正确的 viewcontroller 实例。

代码:

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
UIViewController *tempController = [tabBarController.viewControllers objectAtIndex:2];
if (viewController == [tabBarController.viewControllers objectAtIndex:2]) //Never the same
{
[(UINavigationController *)viewController popToRootViewControllerAnimated:NO];
NSLog(@"Popping to root");
}
}

我在这里调用方法:

-(void) notifmethod{

UIViewController *cameraViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"cameraNavViewController"]; //Tried this
//CameraNavController *viewController = [[CameraNavController alloc] init];/And this
[self tabBarController:self didSelectViewController:cameraViewController]; //The call
NSLog(@"This called");
}

这样做的主要原因是如果选择了某个 View Controller ,我想popToRootViewControllerAnimated:NO。感谢您的帮助!

最佳答案

我认为您的问题是您在 notif 方法中创建了 cameraViewController 的新实例,而不是获取已经与选项卡栏 Controller 关联的实例。此外,无需调用委托(delegate)方法,只需执行以下操作:

-(void) notifmethod{

UINavigationController *nav = self.tabBarController.viewControllers[2];
[nav popToRootViewControllerAnimated:NO];
}

我假设您是从选项卡栏 Controller 的 View Controller 之一调用它,所以我使用 self.tabBarController。如果这不是真的,那么您将不得不更改该引用。

关于iphone - 选择 tabview 时获取正确的 UIViewController 实例 - IOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16895508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com