アプリケーションのタブビューにかなりの問題があります。私の問題は、タブバーの途中でカスタム UIButton を使用していて、インデックスを変更するときにdidSelectViewController
デリゲート メソッドをUITabBarControllerDelegate
手動で呼び出していることです。
問題は、選択されている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");
}
popToRootViewControllerAnimated:NO
これの主な理由は、特定のビューコントローラーが選択されている場合にしたいからです。助けてくれてありがとう!