2012-01-07 1 views
0

Three20 프레임 워크의 TTTableView 클래스를 사용하여 URL이있는 HTML을 포함하여 스타일이 지정된 콘텐츠가있는 테이블 뷰 셀을 만듭니다. 세포가 잘 보이고 잘 작동합니다. URL이 선택되고 적절한 위임 메소드가 실행됩니다. 그러나 URL은 TTWebController에서 열려 있습니다. TTWebController에는 탐색 스택의 뷰를 팝하는 백 화살표가 없습니다. Heres는TTNavigator가 네비게이션 스택으로 푸시되지 않음

내 코드 :

TTTableStyledTextItem *messageItem = [TTTableStyledTextItem itemWithText:[TTStyledText textFromXHTML:message lineBreaks:YES URLs:YES]]; 
messageItem.delegate = self; 

TTListDataSource *dataSource = [[TTListDataSource alloc] init]; 
[dataSource.items addObject:messageItem]; 

TTNavigator* navigator = [TTNavigator navigator]; 
navigator.delegate = self; 
navigator.window = [UIApplication sharedApplication].delegate.window; 

TTURLMap* map = navigator.URLMap; 
[map from:@"*" toViewController:[TTWebController class]]; 


self.tableView.dataSource = dataSource; 
self.tableView.delegate = self; 

URL이 셀에 강조 표시 한 불이 방법 도청됩니다

- (BOOL)navigator: (TTBaseNavigator *)navigator shouldOpenURL:(NSURL *) URL { 
return YES; 

}

가 TTWebController은하지 않는 것이 푸시 할 네비게이션 스택은 뒤로 화살표가없는 "표시"되어 있습니다. 이견있는 사람? 주위에 재생 후 내 솔루션

업데이트는 좀 더 그 문제는 내가 정기적으로 아이폰 OS은 UINavigationController를 사용하는 동시에 새로운 뷰 컨트롤러를 밀어 Three20 URL 탐색 방법을 사용하려고한다는 것입니다 생각합니다. TTWebController가 표시되는 지점은 Three20 탐색 스택의 첫 번째보기 컨트롤러이므로 루트보기 컨트롤러이므로 이전보기로 돌아갈 생각이 없습니다. 이 몇 가지 일을하는 데 도움이

- (BOOL)navigator: (TTBaseNavigator *)navigator shouldOpenURL:(NSURL *) URL { 
    // setup a webcontroller with the URL and push it 
    TTWebController *webController = [[TTWebController alloc] init]; 
    [webController openURL:URL]; 
    [self.navigationController pushViewController:webController animated:YES]; 
    [webController release]; 

    // dont navigate with TTBaseNavigator 
    // this does not use the regular UINavigation stack and 
    // ... the new view becomes rootview and has no back button 
    return NO; 
} 

희망 :

여기 주위에 내 작품이다.

답변

0

tableView가 포함 된 viewController를 어떻게 표시했는지에 따라 발생할 수 있습니다. viewController는 UINavigationController에 푸시하거나 url을 호출합니다 (이 경우 Three20은 자동으로 navigationController를 만듭니다).

WebController가있는 navigationController를 푸시 할 수 있어야합니다.

+0

테이블보기가 포함 된보기 컨트롤러는 일반 UINavigationControler로 푸시되고 내가 준 코드 예제에서 가장 많이보기 컨트롤러입니다. 나는 호출 된 WebController가 push 될 것이라고 생각했을 것이다. WebController 또는 TTNavigator에 사용되는 UINavigationControllr에 대한 참조를 구체적으로 제공해야합니까? – lukestringer90

+0

아니요, 일반적으로 그렇지 않을 수도 있지만 시도해 볼만한 가치가있을 수 있습니다. 'TTNavigator'에'setRootViewController :'를 사용하십시오. – tonklon

+0

아직 기쁨이 없습니다. – lukestringer90