2012-03-28 1 views
0

내 프로젝트에서 TabStrip을 사용하고 있습니다. 탭 스트립에는 알파벳 A-Z 인 TTTabItems가 있습니다. 대리자가 각 알파벳 문자를 클릭하면 다른 페이지로 이동합니다.Three20 TabStrip

다른 페이지에는 TTTabstrip도 있습니다 (동일한 구조, 프레임 등). 두 번째 탭에서 이벤트를 트리거하지 않고 어떻게 알파벳을 표시 할 수 있습니까?

나는 "A"의 정수 값을 MOD 편지의 정수 값을 얻기 위해 (그것이 나에게 인덱스를 가져올 수 있도록)과에 할당 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 (검색 및 탭), 다음 두 번째 viewcontroller 항목에 데이터를 표시하고 세 번째 viewcontroller 세부 정보를 제공합니다. 두 번째 viewcontroller 실제로 선택한 문자가 있지만 세 번째 하나를 문자를 선택하면 (프로그래밍 방식으로, 그것을 문자 C에 예를 보여줄) dealloc 않습니다. – Panagiotis

+0

죄송합니다. 나는 당신이 뭔가 다른 것을 의미한다고 생각했습니다. 컨트롤러의 코드를 게시 할 수 있습니까? – aporat