TTTableViewController showMenu: forCell: пример - PullRequest
0 голосов
/ 07 января 2011

Я ищу пример того, как создать анимированное меню строк, как в приложениях Facebook и Twitter для iphone. Я вижу, что у TTTableViewController есть метод showMenu:forCell:, но я не смог найти примеров того, как его использовать. В частности, в контексте селектора URL-навигатора, но любой пример был бы хорош.

1 Ответ

0 голосов
/ 03 февраля 2011

Удалось ли вам найти пример по этому вопросу?

Я тоже застрял с той же проблемой, что и вы. Я не смог найти пример использования TTTableViewController showMenu: forCell: метод неделю назад. После игры с кодом, я придумал это ...

Создайте подкласс TTTableViewCell и добавьте UIB-кнопку (как триггер для запуска представления меню) к представлению.

@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 в источник данных.

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

В обработчике действий здесь вызывается showMenu: forCell :. Хитрость заключается в том, чтобы определить, к какой ячейке принадлежит кнопка, и, следовательно, заменить эту ячейку на представление меню. Это то, что я сделал.

- (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-навигатора, но он функционален.

...