UITableViewCell с помощью кнопки UIB

У меня есть UITable, который содержит некоторые кнопки UIB. Я хотел бы использовать метку.

У меня проблема в том, что мне нужны две метки тега, одна для получения ячейки в tableviewCellWithReuseIdentifier и configureCell.

До недавнего времени я использовал UIButton.title, чтобы определить, какую строку в таблице я выбрал. Текст (невидимый) был номером строки.

Теперь мне нужно использовать заголовок для некоторого видимого текста. Как я могу все еще найти, какая строка была нажата?

Когда я нажимаю область за пределами кнопки, вызывается обычный didSelectRowAtIndexPath. Сложность в том, что я хочу захватить как UIButton (который вызывает свой собственный селектор), так и строку, которую я узнал из названия. Теперь мне нужно название для чего-то еще.

4 ответа

Решение

Я использую что-то вроде этого. Это даст вам указатель в табличном представлении.

- (IBAction)buttonAction:(id)sender {
    UIButton *button = (UIButton *)sender;
    CGPoint buttonOriginInTableView = [button convertPoint:CGPointZero toView:tableView];
    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:buttonOriginInTableView];

    // do something
}

Вы можете создать подкласс UITableViewCell или UIButton и добавить некоторые свойства.

Вы должны реализовать UITableViewDelegate протокол.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Do something based on selected row (indexPath.row)
}

Реализуйте протокол UITableViewDelegate. Это поможет вам и сделает то, что вам нужно.

didSelectRowAtIndexPath вызывается автоматически при выборе строки в вашей таблице.

в вашем.m файле тот, с контроллером табличного представления, если его там нет, добавьте этот метод:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

   // NSInteger row = [indexPath row];
   // or (indexPath.row)
   // do whatever you like with this value which tells you which row is selected.

}

PK

Другие вопросы по тегам