Изменение вкладки Tabbarcontroller в обучающем модуле wenderlich

Я буду очень признателен за любую помощь в этом - я пытался выяснить, как изменить вкладки на tabbarcontroller из вложенного UITABLEVIEW, как в учебнике RayWenderlich.com на импульс, как скроллер http: //www.raywenderlich.com / 4723 / как сделать интерфейс с горизонтальными таблицами, как импульсные новости-приложение-часть-2, но я действительно застрял. Я использую раскадровки и Xcode 4.4

Я полностью новичок в xcode с нескольких недель, поэтому я прошу прощения, если это вопрос новичка. У меня есть вложенные горизонтальные представления таблицы, работающие нормально, как показано на изображении в ссылке выше, но я хочу использовать изображения для переключения на новую вкладку, но не могу - я думаю, это потому, что представление таблицы является вложенным, поэтому я не могу найти правильная ссылка на tabbarcontroller в иерархии.

если я использую ArticleListViewController.m, я выбрал там, где учебник включает комментарии, которые, как мне кажется, предлагают для вставки навигационного кода, сгенерирует вывод NSLog и изменит вкладки, но только с использованием крошечной тонкой полоски над изображениями (я обнаружил это случайно), но ничего не происходит с изображений.

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
   {
      // Navigation logic may go here. Create and push another view controller   

   //THIS SELECTS WHEN CLICK THINSTRIP JUST ABOVE BUTTONS
   NSLog(@"ARTICLELISTVIEWCONTROLLER check didSelect: %u", self.tabBarController.selectedIndex);  

   self.tabBarController.selectedIndex = 2;
       }

следующий код в HorizontaTableCell.m более правильно генерирует вывод NSLog, когда я щелкаю по фактическим изображениям, но я не могу понять ссылку на tabbarcontroller, которая позволяет мне менять вкладки.

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
   {

    //the following line just generates an Error as follows: Property tabBarController not found on object of type 'HorizontalTableCell *'  

   self.tabBarController.selectedIndex = 2;

   NSLog(@"HORIZONTALTABLECELL DIDSELECT");

   }

Я искал и искал способ обойти это, но не могу понять это. Нашел упоминание об использовании appdelegate, но не уверен, как это сделать. не может публиковать изображение раскадровки как нового пользователя, но у него есть контроллер tabbar с четырьмя навигационными контроллерами - первое - это меню ArticleListViewController, а все остальные - это viewcontrollers - один я надеюсь разместить веб-представление, которое загружает ссылку / локальную страницу в зависимости от выбранное меню и другие для экранного меню и дополнительного в настоящее время пустого экрана.

Пожалуйста помоги!

Спасибо!

1 ответ

Решение

Я предполагаю, что у вас есть tabBarController как свойство в делегате вашего приложения?

Вы можете связаться с делегатом приложения с помощью:[[UIApplication sharedApplication] delegate]

Приведите это к вашему классу делегата приложения, и компилятор не будет предупреждать вас о достижении контроллера панели вкладок. Как это:

((YourAppDelegate *) [[UIApplication sharedApplication] delegate]).tabBarController.selectedIndex = 2;

Что касается метода делегата tableview, ArticleListViewController звучит как место, где вы хотели бы этого. Ячейки должны быть просто тупыми представлениями с минимальной логикой представления. Если он не вызывается, убедитесь, что вы правильно настроили его в качестве делегата для табличного представления (в конструкторе интерфейса, если вы следовали тому учебнику, на который ссылались).

Другие вопросы по тегам