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

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;
}

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
}

4

Ini menghentikan indentasi:

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

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;
}

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;
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.