Apakah ada cara untuk menyembunyikan tombol “-” (Hapus) saat mengedit UITableView

97

Di aplikasi iphone saya, saya memiliki UITableView dalam mode edit, di mana pengguna hanya diizinkan untuk menyusun ulang baris tanpa izin hapus yang diberikan.

Jadi apakah ada cara di mana saya bisa menyembunyikan "-" tombol merah dari TableView. Tolong beritahu saya.

Terima kasih

iPhoneDev
sumber

Jawaban:

258

Inilah solusi lengkap saya, tanpa lekukan (rata kiri 0) sel!

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewCellEditingStyleNone; 
}

- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}


- (BOOL)tableView:(UITableView *)tableview canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}
Stefan von Chossy
sumber
43

Swift 3 setara dengan jawaban yang diterima hanya dengan fungsi yang diperlukan:

func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
    return false
}

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    return .none
}
antoine
sumber
4

Ini menghentikan indentasi:

- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}
sethtc
sumber
3

Saya menghadapi masalah serupa di mana saya ingin kotak centang khusus muncul dalam mode Edit tetapi bukan tombol hapus '(-)'.

Jawaban Stefan mengarahkan saya ke arah yang benar.

Saya membuat tombol sakelar dan menambahkannya sebagai editingAccessoryView ke Sel dan menghubungkannya ke sebuah metode.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    ....
    // Configure the cell...

    UIButton *checkBoxButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 40.0f, 32.0f)];
    [checkBoxButton setTitle:@"O" forState:UIControlStateNormal];
    [checkBoxButton setTitle:@"√" forState:UIControlStateSelected];
    [checkBoxButton addTarget:self action:@selector(checkBoxButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

    cell.editingAccessoryType = UITableViewCellAccessoryCheckmark;
    cell.editingAccessoryView = checkBoxButton;

    return cell;
}

- (void)checkBoxButtonPressed:(UIButton *)sender {
    sender.selected = !sender.selected;
}

Menerapkan metode delegasi ini

- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleNone;
}
srik
sumber
0

Saat Anda hanya ingin menyembunyikan titik (-) saat mengedit tetapi Anda mungkin ingin tetap menggunakan fungsionalitas penghapusan untuk pengguna, Anda menerapkannya seperti di UITableViewDelegatekelas yang sesuai dengan protokol

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.editing) return UITableViewCellEditingStyleNone;
    return UITableViewCellEditingStyleDelete;
}
Ol Sen
sumber