iPhone - проблема dequeueReusableCellWithIdentifier с пользовательскими ячейками - PullRequest
1 голос
/ 07 октября 2009

Я использую пользовательский класс UITableViewCell. В моей ячейке есть несколько кнопок (точнее, 4), и нажатия кнопок обрабатываются в UIViewController, который использует этот класс ячеек.

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

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

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

1 Ответ

0 голосов
/ 07 октября 2009
- (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;
....
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...