iPhone SDK: открытие ячейки с помощью специальной кнопки, а не касанием ячейки - PullRequest
1 голос
/ 05 августа 2010

У меня есть простой TableView, содержащий несколько ячеек. Обычно я переключаюсь на выбранные ячейки, нажимая эту ячейку. Но что, если мне нужна выделенная кнопка для каждой ячейки? Я видел свойства «Ячейка табличного представления» в Интерфейсном Разработчике, он имеет то, что мне нужно, но его нельзя добавить к существующим ячейкам.

Как правильно добавить кнопку такого типа в каждую ячейку стандартного TableView?

Ответы [ 3 ]

2 голосов
/ 05 августа 2010

Я делаю нечто подобное в приложении, над которым я сейчас работаю.У меня есть ячейка с кнопкой, и мне нужно знать, какая кнопка была нажата в какой ячейке.Я делаю это следующим образом ..

Я добавляю свою кнопку в каждую ячейку ..

// add buy button to each cell
UIImage *image;
buyButton = [UIButton buttonWithType:UIButtonTypeCustom];
image = [UIImage imageNamed:@"buy.png"];
[buyButton setBackgroundImage:image forState:UIControlStateNormal];
buyButton.frame = CGRectMake(220, 35, 96, 34);
[buyButton setTag:cellIndex];
[buyButton addTarget:self action:@selector(buyTickets:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:buyButton];

Метод, используемый для определения, какая "кнопка" в какой ячейке была выбрана, затем я нажимаю другуюпросмотр контроллера с информацией о выбранной кнопке ...

// buy tickets button pressed from main table view 
- (void) buyTickets:(id)sender{


    ResultViewController *vc = [[ResultViewController alloc] init];
    vc.buyMovieID = [sender tag]; // "sender tag" is the cell id the button is located in
    [[super navigationController] pushViewController:vc animated:YES];
    [vc release];
}

Так выглядит кнопка в каждой ячейке.Надеюсь, это поможет!

PS Нажатие на CELL приведет к нажатию на другой контроллер представления, но нажатие на кнопку «Купить билеты» приведет к изменению другого.

alt text http://luistovar.com/ultratableview.jpg

2 голосов
/ 05 августа 2010

Я думаю, что вам нужен тип аксессуара для раскрытия деталей. Документ можно найти в справочнике UITableViewCell .

Там написано:

Вспомогательное представление появляется в правой части ячейки в обычном (по умолчанию) состоянии табличного представления. Стандартные виды аксессуаров включают в себя раскрытие шеврона; описание допустимых констант accessoryType см. в разделе «Тип аксессуара ячейки». По умолчанию используется UITableViewCellAccessoryNone. Если пользовательское вспомогательное представление задается через свойство accessoryView, значение этого свойства игнорируется. Если ячейка включена и типом аксессуара является UITableViewCellAccessoryDetailDisclosureButton, вид аксессуара отслеживает касания и при касании отправляет объекту источника данных tableView: accessoryButtonTappedForRowWithIndexPath: message.

Если для свойства accessoryType вашей ячейки установлено значение UITableViewCellAccessoryDetailDisclosureButton , вы можете легко делать все, что угодно, когда нажата кнопка раскрытия подробностей. Преимущество использования этого типа аксессуара состоит в том, что это стандартная кнопка, поэтому она удобна для пользователя и выполняет всю работу по отслеживанию, какая ячейка была затронута за вас.

Если вы хотите использовать пользовательскую кнопку, вам следует установить свойство accessoryView для этой пользовательской кнопки и прослушивать события на ней.

0 голосов
/ 05 августа 2010

То, как я добавил кнопку в ячейку табличного представления, заключалось в создании подкласса UITableViewCell и последующем построении его представления в конструкторе интерфейса.

...