Xcode Storyboard с UITabViewController - переключать вкладки с кнопки - PullRequest
1 голос
/ 22 января 2012

У меня есть настройка проекта с использованием раскадровки, которая содержит UITabViewController в качестве начального корневого представления. Одна из вкладок загружает NavigationController, который, в свою очередь, загружает пользовательский класс контроллера представления.

Из пользовательского контроллера представления у меня есть кнопка панели навигации, для которой я хочу вызвать действие, которое возвращает корневой UITabViewController в его первый индекс. Я смог сделать это, используя традиционную структуру xib, добавив класс appDelegate в xib и таким образом связав метод с кнопкой.

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

@implementation AppDelegate

@synthesize window = _window;
@synthesize tabBarController=_tabBarController;

-(IBAction)handleHome:(id)sender{
    //How do I send a message to the tabBarController?
    [self.tabBarController setSelectedIndex:0];
}

Возможно ли это сделать с помощью раскадровки? Я посмотрел на Segue, но, похоже, это не то, что я пытаюсь сделать (у меня нет возможности поговорить с корневым UITabViewController из того, что я вижу).

У меня есть метод handeHome, запускаемый с использованием подхода Responder, так что на самом деле все, что мне нужно знать, - это как получить доступ к экземпляру tabViewController в Storyboard.

Надеюсь, этот вопрос имеет смысл, дайте мне знать, если есть что-то, на чем я должен остановиться.

Ответы [ 2 ]

2 голосов
/ 22 января 2012

Почему бы просто не сделать это в вашем собственном контроллере представления?

- (IBAction)handleHome:(id)sender {
    self.tabBarController.selectedIndex = 0;
}

Свойство tabBarController встроено в UIViewController.

1 голос
/ 22 января 2012

Я понял это. Я обновил цитируемый блок кода следующим образом:

@implementation AppDelegate

@synthesize window = _window;

-(IBAction)handleHome:(id)sender{

    UITabBarController *tabViewController = (UITabBarController *) self.window.rootViewController;

    [tabViewController setSelectedIndex:0];

}

Вздох ... нужно больше кофе, прежде чем задавать вопросы по SO

...