2011-01-06 1 views
0

아이폰 용 & twitter 앱에 Facebook과 같은 애니메이션 행 메뉴를 만드는 방법의 예를 찾고 있습니다. TTTableViewController에는 showMenu:forCell: 메서드가 있지만 사용 방법에 대한 예제를 찾을 수 없었습니다. URL 네비게이터 선택기의 컨텍스트에서 특히 그렇지만 모든 예제가 훌륭합니다.TTTableViewController showMenu : forCell : example

답변

0

예를 찾을 수 있었습니까?

나도 같은 문제로 붙어있었습니다. 일주일 전 TTTableViewController showMenu : forCell : 메서드를 사용하는 예제를 찾을 수 없습니다. 코드를 망쳐 놓은 후에 나는 이걸 생각해 냈다.

TTTableViewCell의 하위 클래스를 만들고 (메뉴 뷰를 시작하는 트리거로) UIButton을 뷰에 추가한다.

@interface MyViewCell : TTTableViewCell { 
} 

- (id) initWithName:(NSString *)name target:(id)target action:(SEL)action { 
    // ... 

    UIButton *moreButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    moreButton.frame = CGRectMake(268.0f, 6.0f, 32.0f, 32.0f); 
    [moreButton setImage:TTIMAGE(@"bundle://Icon_More.png") 
        forState:UIControlStateNormal]; 
    [moreButton addTarget:target action:action 
     forControlEvents:UIControlEventTouchUpInside]; 
    [self moreButton]; 

    // ... 
} 

다음, TTTableViewController의 서브 클래스를 생성하고 데이터 소스에 정의 TTTableViewCells 추가. forCell :라고 ShowMenu는 어디에 액션 핸들러에서

@interface MyTableViewController : TTTableViewController { 
} 

- (void) createModel { 
    self.dataSource = [TTListDataSource dataSourceWithObjects: 
    [[[ContactViewCell alloc] initWithName:@"Cell 1" 
            target:self 
            action:@selector(moreButtonDidPress:)] 
            autorelease], 
    [[[ContactViewCell alloc] initWithName:@"Cell 2" 
            target:self 
            action:@selector(moreButtonDidPress:)] 
            autorelease], 
    nil]; 
} 

, 즉이다. 트릭은 버튼이 속한 셀을 판별하여 그 셀을 메뉴보기로 바꾸는 것입니다. 이것이 내가 한 일이다.

- (void) moreButtonDidPress:(id)sender { 
    // Load our custom menu view from a nib. 
    UIView *menuView = [[UIView alloc] initWithFrame:cell.contentView]; 

    UIButton *moreButton = (UIButton *) sender; 
    // Convert plusButton bounds to the the coordinate system of table view 
    // and then get the cell containing the button. 
    CGRect coord = [plusButton convertRect:moreButton.bounds toView:self.tableView]; 
    NSIndexPath *path = [self.tableView indexPathForRowAtPoint:coord.origin]; 
    TTTableViewCell* cell = (TTTableViewCell*) [self.tableView 
               cellForRowAtIndexPath:path]; 

    // Now call showMenu with the menu to display on the associated cell. 
    [self showMenu:menuView forCell:cell animated:YES]; 
} 

정확하게 URL 네비게이터 선택기를 사용하지는 않지만 작동합니다.

+0

멋쟁이. 단지 호기심. 일반적으로 내 TTTableViewController는 사용자 지정 Model 클래스를 사용하는 사용자 지정 DataSource 클래스를 사용하는 데이터 소스/모델 패턴을 사용합니다. DataSource 클래스의 selector를 전달하면 TTTableViewController에서 selector를 정의 할 수 있습니까? 어느 쪽이든 정말 좋으므로 게시 해 주셔서 감사합니다! – Ben

+0

또한 TTTableViewItem 대신 TTTableViewCell을 생성하는 것으로 나타났습니다. 현재 320의 매우 달콤한 부분 인 html을 사용하여 각 셀을 레이아웃 할 수있는 TTTableStyledTextItem을 사용하고 있습니다. 사용 해보았습니까? 그렇다면 셀 방식으로 전환하는 이유는 무엇입니까? 많은 감사 ... Ben – Ben

+0

ShowMenu : forCell : TTTableViewController에서만 호출 할 수 있으며 메뉴 뷰와이를 트리거하는 테이블 셀에 대한 참조가 필요합니다. 따라서 선택기는 TTTableViewController에 있어야하거나 선택기에 TTTableViewController 객체에 대한 참조가 제공되어야합니다. 그것은 도전입니다. – Cybersam