Three20 TabStrip - PullRequest
       15

Three20 TabStrip

0 голосов
/ 28 марта 2012

Я использую TabStrip для моего проекта.У вкладки есть TTTabItems, которые являются алфавитом AZ.Когда я нажимаю на каждую букву алфавита, делегат переходит на другую страницу.

На другой странице также есть вкладка TTTab (та же конструкция, рамка и т. Д.).Как пометить алфавит также на второй вкладке, не вызывая событие?

Я попытался получить целочисленное значение буквы, а целочисленное значение - «a» (чтобы он принес мне индекс)и назначьте его для selectedIndex:

unichar letter = [[NSString stringWithString:@"e"] characterAtIndex:0];
/*(k is @"a" unichar)*/
tabBar.selectedTabIndex = letter % kEnglishAlpha;

Но это дает мне ошибку освобождения.

** ОБНОВЛЕНИЕ **

в подробном представлении детализации (где у меня естьпроблема) Я упомянул в комментариях, что у меня есть следующее, полученное из навигации tt:

tt://listWords/Cat

на событии вида загрузил и после инициализации TTTabStrip (который содержит только TTTabItem с буквами AZ) иtabBar.delegate = самостоятельное объявление, я использую верхний код для «выбора» выбранной буквы.Остальная часть представления показывает определение и все, что с этим связано.Обычно это имеет место, но когда я использую кнопку «Назад», чтобы вернуться к представлению, имеющему tttableItems (cat, catsup, catnip и т. Д.), Оно говорит, что контроллер освобожден.

Я предполагаю, что при использовании кода делегирования с выбранной вкладкой и установке индекса индекса он немедленно вызывает выбранный код вкладки, и в этом проблема.Если я не использую код selectedTabIndex, я могу без проблем перемещаться назад и по буквам.

1 Ответ

0 голосов
/ 29 марта 2012

В TTStripTab нет функции автоматического выбора TTTabItem.

Вам нужно будет расширить TTTabStrip и добавить эту функцию:

///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)setSelectedTabIndexToCenter:(NSInteger)selectedTabIndex {
  if (selectedTabIndex>_tabItems.count-1) {
    selectedTabIndex = _tabViews.count-1;
  }

  [self layoutSubviews];
  float horizontalOffset = 0.0f - _scrollView.size.width/2;
  for (int i = 0; i < selectedTabIndex; ++i) {
    TTTab* tab = [_tabViews objectAtIndex:i];
      if (selectedTabIndex-1==i) {
        horizontalOffset += tab.size.width*1.5;

      } else {
          horizontalOffset += tab.size.width;
      }
    }
    if (horizontalOffset<0) {
      horizontalOffset = 0;
    }

    _scrollView.contentOffset = CGPointMake(horizontalOffset, 0);
    [super setSelectedTabIndex:selectedTabIndex];
}

Эта функция будет выбирать конкретный элемент вкладки и центрировать его, изменяя смещение вкладки полосы.

...