2014-10-25 2 views
1

У меня есть три контроллера вида, которые подключены к контроллеру панели вкладок, который, как я думал, должен автоматически установить presentingViewController/представленный контроллер контроля. Однако, когда я переключаюсь между моими диспетчерами и я регистрирую [self presentingViewController], он регистрирует нуль. Я поместил журнал в мои методы viewDidAppear в каждом из контроллеров представления.presentingViewController отображается как null

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:YES]; 

    NSLog(@" my presenting view controller is %@", [self presentingViewController]); 

} 

Выход:

my presenting view controller is (null) 
+0

Свойство presentingViewController настроено на контроллер, который представил вас - это означает, что он сделал это с помощью модального представления или segue. Переключение вкладок в контроллере панели вкладок не является презентацией. – rdelmar

+0

Но когда я переключаю вкладки, мой новый вид представлен ... Извините, я очень смущен. – carolynnvu

+0

Нет, это не «представлено», оно появляется на экране. Презентация в контексте представленияViewController и представленногоViewController означает модальную презентацию. Каковы ваши намерения здесь? Вы пытаетесь выяснить, из какой вкладки вы пришли? – rdelmar

ответ

0

Если вы хотите знать, какие вкладки вы пришли, то вы должны наследоваться контроллер панели вкладок, и установить его в качестве своего собственного делегата. Создайте свойство integer, oldIndex, которое вы можете установить перед переключателем табуляции в методе делегирования, 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]); 
} 
+0

Спасибо за ваше предложение. Я попробую его и обновит. – carolynnvu

-1

Это, вероятно, не очень хорошая идея, чтобы сделать поведение одной вкладки зависит от того, что вкладка Последнее показано на рисунке. Вкладки предназначены для работы независимо.

+0

У меня есть данные, которые нужно получить через несколько вкладок. Поэтому для моей реализации мои вкладки зависят друг от друга. – carolynnvu

Смежные вопросы