Изменение вкладки Tabbarcontroller в учебном пособии по вендерлиху uitableview

Я буду очень благодарен за любую помощь в этом - я пытался понять, как менять вкладки на контроллере вкладок из вложенного UITABLEVIEW, как в учебнике RayWenderlich.com по пульсу, подобному скроллеру http://www.raywenderlich.com/4723/how-to-make-an-interface-with-horizontal-tables-like-the-pulse-news-app-part-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, но не уверен, как это сделать. не могу опубликовать изображение раскадровки от имени нового пользователя, но у него есть tabbarcontroller с 4 выходящими контроллерами навигации - первый - это меню ArticleListViewController, а каждый из остальных - контроллеры просмотра - один я надеюсь разместить веб-просмотр, который загружает ссылку/локальную страницу в зависимости от выбранное меню и другие для экрана информации и дополнительного пустого экрана.

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

Благодарность!


person elricardo    schedule 25.08.2012    source источник


Ответы (1)


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

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

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

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

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

person iceydee    schedule 26.08.2012
comment
спасибо, я думаю, что я получил это сейчас! после небольшого траления вокруг и выше сработало следующее. буквально потратил весь день и большую часть недели, пытаясь решить эту проблему! AppDelegate *appdelegate1= (AppDelegate *)[[UIApplication sharedApplication] делегат]; appdelegate1.TBcontroller.selectedIndex = .... - person elricardo; 27.08.2012