Я бы хотел, чтобы одна из строк моей таблицы была кнопкой, занимающей всю строку моего UITableView. Я решил, что лучший способ сделать это - создать экземпляр UIButton и дать ему тот же размер кадра, что и у экземпляра UITableViewCell, и добавить его в качестве подпредставления в ячейку. Я почти у цели, но довольно много пикселей, чтобы не получить этого идеального прикосновения. Есть ли лучший подход к этому, или, возможно, моя точность размещения может быть исправлена, чтобы получить идеальное выравнивание?
cell = [tv dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [self tableviewCellWithReuseIdentifier:CellIdentifier];
}
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(0.0f, 5.0f, 320.0f, 44.0f)];
[button setTitle:@"Do Stuff" forState:UIControlStateNormal];
[button addTarget:self action:@selector(doStuff:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:button];





Вы можете подделать его в своем методе didSelectRowAtIndexPath :. Сделайте так, чтобы ячейка tableView действовала как кнопка.
[[[self tableView] cellForRowAtIndexPath:indexPath] setSelected:YES animated:YES];
[self doStuff];
[[[self tableView] cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES];
Используйте setSelected: animated:, чтобы имитировать нажатие кнопки и заставить ее исчезнуть.
Могу помочь тебе.
Мне нравится эта идея. Отлично работает с сгруппированными таблицами.
Только есть небольшая задержка между нажатием и "вспышкой" ...
Это может быть не к делу, но в вашем коде может быть проблема, когда в ячейку добавляется еще одна кнопка каждый раз, когда ячейка используется повторно.
У меня была такая же проблема, как и у вас. И Райан дал вам ответ: используйте саму ячейку как кнопку с методом didSelectedRowAtIndexPath :.
Вы также можете добавить UIImage в свой UITableViewCell, чтобы ячейка выглядела как кнопка.
Вы также можете создать представление с помощью кнопки и разместить его в нижнем колонтитуле раздела над ним. Таким образом, вам не нужно беспокоиться об изображении ячейки в фоновом режиме. Я сделал это, чтобы разместить две кнопки половинной ширины бок о бок в сгруппированном табличном представлении.
FWIW, я помещаю кнопку в свое приложение на CGRectMake (9, 0, 302, 45) и я думаю, что это выглядит идеально.
Класс (UITableViewCell) имеет свойство contentView. Поэтому я поместил базовую кнопку в contentView переменной UITableViewCell.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
・・・
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(230.0f, 4.0f, 60.0f, 36.0f);
[btn setTitle:@"OK" forState:UIControlStateNormal];
[btn setTitle:@"OK" forState:UIControlStateSelected];
[btn addTarget:self action:@selector(onClickRename:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:btn];
・・・
return cell;
}
Извини, плохой мой английский.
UIButton *btnView = [[UIButton alloc] init];
btnView.frame = CGRectMake(52.0f, 2.0f, 215.0f, 38.0f);
[btnView setImage:[UIImage imageNamed:@"invite.png"] forState:UIControlStateNormal];
[btnView addTarget:self action:@selector(showInviteByMail) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:btnView];
[btnView release];
если вы хотите, чтобы он подходил идеально, просто назовите границы ячейки как свой CGRect. сделай это так:
button.frame = cell.bounds;
Это должно сделать вашу кнопку точно такой же, как и ваша ячейка. Надеюсь, это поможет!
Шнур
Можете ли вы оставить устаревший тег "objectivec" в ваших вопросах в будущем? Кроме того, «какао» не совсем подходит для вопросов об iPhone. Спасибо!