presentsViewController显示为null

时间:2014-10-25 18:53:37

标签: ios objective-c xcode ios7

我有三个视图控制器连接到标签栏控制器,我认为应该自动设置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)

2 个答案:

答案 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)

根据最后显示的标签,制作一个标签的行为可能不是一个好主意。标签设计为独立运行。