我有三个视图控制器连接到标签栏控制器,我认为应该自动设置presentViewController / presentsViewController。但是,当我在我的视图控制器和我记录[self presentingViewController]之间切换时,它会记录为null。我将日志放在每个视图控制器中的viewDidAppear方法中。
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:YES];
NSLog(@" my presenting view controller is %@", [self presentingViewController]);
}
输出:
my presenting view controller is (null)
答案 0 :(得分:0)
如果您想知道自己来自哪个标签,那么您应该对标签栏控制器进行子类化,并将其设置为自己的委托。创建一个整数属性oldIndex,您可以在委托方法中的tab开关之前设置它,tabBarController:shouldSelectViewController:。
@interface RDTBC () <UITabBarControllerDelegate>
@end
@implementation RDTBC
- (void)viewDidLoad {
[super viewDidLoad];
self.delegate = self;
}
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
self.oldIndex = self.selectedIndex;
return YES;
}
然后在你的视图控制器中,你可以这样做,
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"%ld",[(RDTBC *)self.tabBarController oldIndex]);
}
答案 1 :(得分:-1)
根据最后显示的标签,制作一个标签的行为可能不是一个好主意。标签设计为独立运行。