как поставить кнопку в ячейке UItableview в target-c? - PullRequest
2 голосов
/ 25 июля 2011

У меня есть массив для отображения в виде таблицы. Мне нужна кнопка в последней + 1 ячейке. Означает, что массив состоит из 20 элементов. Мне нужна кнопка в 21-й ячейке, как это сделать. эта кнопка также ... как это сделать, скажите мне код ... заранее спасибо.

1 Ответ

6 голосов
/ 25 июля 2011

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

// return the correct row count
-(NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
    return [theArray count] + 1;
}

// detect the last cell and add it a subview
-(UITableViewCell *)tableView:(UITableView *)tableView
        cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    ...
    // detect the last row
    if(indexPath.row == [theArray count]) {
        UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom];
        // set the frame and title you want
        [b setFrame:CGRectMake(0, 0, 50, 50)];
        [b setTitle:@"button" forState:UIControlStateNormal];
        // set action/target you want
        [b addTarget:self
              action:@selector(theActionYouWant:)
    forControlEvents:UIControlEventTouchDragInside];
        [cell addSubview:b];
    }
    else {
        // configure a classic cell
    }

    return cell;
}

// the action method
-(void)theActionYouWant:(id)sender {
    // handle the action
}

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

-(void)tableView:(UITableView *)tableView
 didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if([indexPath row] == [theArray count]) {
        // the extra cell is selected, send a message
    }
    else {
        // others cells selection handler
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...