2012-03-28 11 views
0

私のプロジェクトでTabStripを使用しています。タブストリップにはアルファベットA〜ZのTTTabItemsがあります。デリゲートが各アルファベットの文字をクリックすると、別のページに移動します。Three20 TabStrip

他のページにもTTTabstrip(同じ構造、フレームなど)があります。イベントをトリガーすることなく、2番目のタブストリップにもアルファベットをマークできますか?

私は(それは私にインデックスをもたらすように)、MODの文字の整数値に「A」の整数値を取得し、selectedIndexのにそれを割り当てようとしました:

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

しかし、それは私の解放を与えますエラー。

** UPDATE **詳細ビュードリルダウンの

私は、次のTTのナビゲーションから来ているコメントで述べた(私は問題を抱えている場合):上

tt://listWords/Cat 

TTTabStrip(文字AZのTTTabItemのみを含む)とtabBar.delegate = self宣言を初期化した後、上のコードを使用して選択した文字を選択します。ビューの残りの部分は定義と関連するすべてを示しています。通常はそうですが、バックボタンを使用してtttableItems(cat、catsup、catnipなど)を持つビューに戻ると、コントローラの割り当てが解除されます。

私の推測では、tabselectedデリゲーションコードを使用してtabindexを設定すると、タブで選択されたコードがすぐにトリガされ、問題がどこにあるのでしょうか。 selectedTabIndexコードを使用しないと、問題なく文字を前後にナビゲートできます。

答えて

0

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]; 
} 

この関数は、ストリップタブのオフセットを変更することにより、それに特定のタブ項目とセンターを選択します。

+0

ありがとうございますが、selectedTabIndexを変更するとtabselectedイベントが発生しますか?それが私の問題なので、それはそれを起動し、何とかコントローラ全体の割り当てを解除します。私のアプリはタブストリップを使ったドリルダウンです。私は、最初のviewcontroller(検索とタブ)が誰かが項目を押した後、2番目のviewcontrollerの項目がデータを表示し、3番目のviewcontrollerがその項目を表示します。 2番目のviewcontrollerでは実際に私は選択された文字を持っていますが、3番目の文字では、文字を選択すると(プログラムでは、文字Cに表示されます)、deallocを行います。 – Panagiotis

+0

申し訳ありませんが、私はあなたが何か他のことを意味していると思いました。あなたはコントローラのコードを投稿できますか? – aporat

関連する問題