Як змінити текст кнопки видалення uitableview


78

Привіт, я намагаюся змінити текст, який відображається на кнопці видалення, коли користувач прокручує uitableviewcell всередині мого табличного подання.

Я бачив приклад в іншому потоці запитань, який говорить про використання цього делегата tableview

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

Моє питання полягає в тому, як мені використовувати цей метод .. Я не знаю, як цим користуватися.

Відповіді:


198

У вашому контролері, який керує, UITableViewвам слід реалізувати UITableviewDelegateі повернути потрібний заголовок для вашого методу всередині titleForDeleteConfirmationButtonForRowAtIndexPathметоду.

Приклад:

@interface CategoryAddViewController : UITableViewController
@end

@implementation CategoryAddViewController
// ...
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
return @"Please don't delete me!";
}

@end

Залишаючи вас чимось подібним:

введіть тут опис зображення


Чудово, але чому поява кнопки більше не оживляє? Після цього додається кнопка видалення, а не анімація! Редагувати: Моя погана, мабуть, це була симуляція Після перезапуску програми знову все гаразд.
Maciej Swic

@FaizanS. Я також розглядаю це. Чи немає можливості просто змінити власність? Щось на зразок ... self.tableView.deleteButton.name = @"Remove";замість того, щоб замінити метод?
Скотт

Не на момент написання статті. У iOS SDK багато речей досягається шляхом заміни існуючих методів базових класів інтерфейсу.
Faizan S.

2
швидкий шлях:func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath:NSIndexPath) -> String{ return "Remove Me"; }
datayeah

1
У цій відповіді немає підстав додавати <UITableViewDelegate>.
rmaddy

31

У Swift це рівно, просто підпис методу відрізняється!

func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath) -> String? {
  return "Erase"
}

4

Просто поверніть рядок, який потрібно відобразити, а не видалити. Скажімо, ви хочете показати "Стерти" для всіх рядків, вищевказана функція повинна містити:

return @"Erase";

Прочитайте ЦЕ

Також у своєму .h-файлі додайте UITableViewDelegate на випадок, якщо ваш контролер подання ще не є UITableViewController. Тобто це може бути:

@interface SomeView : UIViewController <UITableViewDelegate>

АБО

@interface SomeView : UITableViewController

0

Свіфт 4.2

override func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String? {
        return "Erase"
    }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.