раскадровка uitabbarcontroller: подключение viewcontroller, который уже подключен к другому uitabbarctrl

Я пытаюсь повторно использовать часть своего представления в раскадровке. Я начинаю с uitabbarcontroller и подключаю несколько представлений для каждой вкладки. Теперь я поместил НОВЫЙ uitabbarcontroller в раскадровку, и я хочу подключить одну из его вкладок к ЖЕСТКОМУ viewcontroller, который подключен к исходной панели вкладок.

Можете ли вы таким образом «повторно использовать» контроллеры представления в раскадровке? Или вам нужно создать новые контроллеры просмотра? Я предполагаю, что первое работает, так как я могу сделать это в другом месте раскадровки, выбрав «push». Если я выберу «отношения», это просто не сработает с uitabbar.

в порядке. Я нашел причину своего крушения и думаю, что знаю, что происходит. Похоже, что если я подключу другой uitabbarcontroller, то индексы для представлений на первой панели вкладок будут испорчены. Что я делаю для получения ссылок на контроллеры просмотра в uitabbar, используя

UINavigationController* ar_nav=[self.viewControllers objectAtIndex:1];
_artvc = [ar_nav.viewControllers objectAtIndex:0];
if (![_artvc isKindOfClass:[ArtistTableViewController class]])
{
    TGLog(@"ERR wrong class! %@", [_artvc class]);
    exit(0);
}

Как только я подключаю вторую uitabbar, оказывается, что индекс 1 не тот класс (хотя раскадровка показывает, что это так).

используя этот код на моем исходном контроллере панели вкладок

UINavigationController* n;
for (n in self.viewControllers)
{
    UIViewController* vc=[n.viewControllers objectAtIndex:0];
    TGLog(@"%@", [vc class]);
    if ([vc isKindOfClass:[ArtistTableViewController class]])
    {
        _artvc = (ArtistTableViewController*)vc;
    }
    if ([vc isKindOfClass:[SongsTableViewController class]])
    {
        _stvc = (SongsTableViewController*)vc;
    }
    if ([vc isKindOfClass:[AlbumTableViewController class]])
    {
        _altvc = (AlbumTableViewController*)vc;
    }

}

работает нормально пока не подключу второй uitabbar. Как только я это сделаю, мой viewcontroller уйдет из цикла.


person roocell    schedule 23.12.2011    source источник
comment
Я собираюсь воссоздать лучший вопрос с пустым проектом.   -  person roocell    schedule 24.12.2011


Ответы (2)


Это определенно возможно. Вы уверены, что соединение установлено с представлением?

Я прошу прощения; это было неясно. Когда вы удерживаете элемент управления и перетаскиваете синюю линию соединения, убедитесь, что вы подключаетесь к самому представлению (а не к чему-либо другому).

Вы должны иметь возможность создать эту связь между UITabBarController и представлением, даже если оно используется другим UITabBarController.

Что он покажет вам в качестве вариантов, когда вы попробуете?

person Kinetic Stack    schedule 23.12.2011
comment
Спасибо за помощь. Я перетаскиваю на uitableviewcontroller. Это дает мне 4 варианта: отношения, толчок, модель, кастом. Я предполагаю, что выбираю отношения, потому что хочу, чтобы этот контроллер представления был VC для моей вкладки. он сразу вылетает - я предполагаю, что это происходит при загрузке раскадровки. - person roocell; 24.12.2011
comment
он отлично работает, если я добавлю новый VC в раскадровку и использую его. но не тот, который уже использовался. - person roocell; 24.12.2011
comment
может мне стоило что-то уточнить. У меня есть uitabbar- ›navcontroller-› uitableview. может это иметь какое-то отношение к тому, что там находится navcontroller? (я пробовал подключиться как к navcontroller, так и к tableview. - person roocell; 24.12.2011
comment
Ваша ссылка на изображение раскадровки не работает :( и я не уверен, почему у вас возникли проблемы с доступом к нему через цикл, если все настроено правильно. Я не верю, что вы можете подключить первый контроллер навигации ко второму, я бы придерживайтесь подключения второго контроллера навигации к UITableView. Убедитесь, что вы устанавливаете UITableView в качестве корневого контроллера представления для нового контроллера навигации. - person Kinetic Stack; 24.12.2011

в порядке. это как-то связано (возможно) с тем, что я делаю UITabbar-> navcontroller-> uitableview

Когда я добавляю свою вторую панель вкладок, создаю собственный контроллер навигации и подключаю его. Затем «повторно используйте» исходное табличное представление, подключившись от navcontroller к табличному представлению. Это, похоже, не портит исходную панель вкладок.

вот скриншот моей раскадровки http://www.thumbgenius.dynalias.com/tabbar_vc_reuse.png

person roocell    schedule 23.12.2011