Раскадровка uitabbarcontroller: подключение viewcontroller, который уже подключен к другому uitabbarctrl - PullRequest
0 голосов
/ 24 декабря 2011

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

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

ок.Я нашел причину своего крушения и думаю, что знаю, что происходит.Похоже, что если я подключу другой контроллер uitabbar, то индексы для представлений на первой панели вкладок будут испорчены.Что я делаю, чтобы получить ссылки на контроллеры представления в панели 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 не тот класс (хотя раскадровка показывает, что онis).

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

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 выйдет из цикла.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2011

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

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

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

0 голосов
/ 24 декабря 2011

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

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

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

Что он показывает в качестве вариантов при попытке?

...