2009-10-07 4 views
1

Я использую пользовательский класс UITableViewCell. Моя ячейка имеет несколько кнопок (4, если быть точным), и щелчки на кнопках обрабатываются в UIViewController, который использует этот класс ячейки.iPhone - dequeueReusableCellWithIdentifier проблема с пользовательскими ячейками

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

Может кто-нибудь, пожалуйста, скажите мне, как я могу справиться с этим делом? Если я даю один и тот же тег всем кнопкам в разных строках, как я могу определить строку, на которую была нажата кнопка?

Большое спасибо.

ответ

0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    MyTableCell *cell = (MyTableCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) {  
     // whatever you have now 
    } 
    // Set up the cell... 
    cell.myListViewController = self; 
    int tag = indexPath.row; 
    cell.button1.tag = tag; 
    cell.button2.tag = tag; 
    cell.button3.tag = tag; 
.... 
} 

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

+0

Итак, вы говорите, что я сохраняю экземпляры объектов UIButton в классе UITableViewCell? – lostInTransit

+0

Обратите внимание, что использование строки в качестве тега будет работать только надежно, если у вас есть один раздел таблицы. –

+0

Да, у меня только один раздел. Благодарю. – lostInTransit

Смежные вопросы