มีวิธีใดบ้างในการซ่อนปุ่ม“ -” (ลบ) ขณะแก้ไข UITableView


97

ในแอพ iphone ของฉันฉันมี UITableView ในโหมดแก้ไขซึ่งผู้ใช้จะได้รับอนุญาตให้เรียงลำดับแถวใหม่เท่านั้นโดยไม่ได้รับอนุญาตให้ลบ

มีวิธีใดบ้างที่ฉันสามารถซ่อนปุ่มสีแดง "-" จาก TableView กรุณาแจ้งให้เราทราบ

ขอบคุณ

คำตอบ:


260

นี่คือคำตอบที่สมบูรณ์ของฉันโดยไม่มีการเยื้อง (จัดตำแหน่งด้านซ้าย) ของเซลล์!

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

44

Swift 3เทียบเท่ากับคำตอบที่ยอมรับพร้อมฟังก์ชั่นที่จำเป็นเท่านั้น:

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

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

4

สิ่งนี้จะหยุดการเยื้อง:

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

3

ฉันประสบปัญหาที่คล้ายกันซึ่งฉันต้องการให้ช่องทำเครื่องหมายที่กำหนดเองปรากฏในโหมดแก้ไข แต่ไม่ใช่ปุ่มลบ '(-)'

คำตอบของ Stefan ทำให้ฉันไปในทิศทางที่ถูกต้อง

ฉันสร้างปุ่มสลับและเพิ่มเป็น editAccessoryView ไปยัง Cell และต่อสายเข้ากับเมธอด

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

นำวิธีการมอบหมายเหล่านี้ไปใช้

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

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

0

เมื่อคุณต้องการซ่อนจุด (-) ในขณะที่แก้ไข แต่คุณอาจต้องการเก็บฟังก์ชันการลบไว้สำหรับผู้ใช้ที่คุณนำไปใช้เช่นนั้นในUITableViewDelegateคลาสที่สอดคล้องกับโปรโตคอลของคุณ

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.editing) return UITableViewCellEditingStyleNone;
    return UITableViewCellEditingStyleDelete;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.