一千萬個為什麽

搜索

UITableView不會進入“滑動刪除”模式

我的UITableView與我的UIViewController實例鏈接。 UIViewController實例是表的UITableViewDelegate和UITableViewDataSource。

每當在模擬器中刷一個單元格時,它都不會觸發“滑動刪除”模式。 我試圖提供支持“滑動刪除”和表格單元格編輯的方法的實現。它們都沒有被調用(沒有一個NSLog正在記錄)。

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"tableView editingStyleForRowAtIndexPath");
    return UITableViewCellEditingStyleDelete;
}

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"tableView canEditRowAt...");
    return YES;
}

- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"tableView willBeginEditingRowAtIndexPath: %@", indexPath);
}

- (void)tableView:(UITableView *)tableView willEndEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"tableView willEndEditingRowAtIndexPath: %@", indexPath);
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle {
    NSLog(@"tableView commitEditingStyle");
}

- (void)tableView:(UITableView*)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"tableView didEndEditingRowAtIndexPath");
}

必須有一件我忘記的簡單事情,但無法弄清楚是什麽。有任何想法嗎?

最佳答案

你已經實現了 tableView:commitEditingStyle:,但你需要的方法是 tableView:commitEditingStyle:forRowAtIndexPath:

這是實施協議的挑戰之一。如果您錯誤地指定或拼錯了可選方法,則編譯器無法知道。

以下是一些可能有助於未來的提示:

Tip 1: Cut and paste protocol method declarations directly from the documentation to avoid spelling errors and missed arguments.

Tip 2: Create sets of correct protocol methods (with mostly empty bodies) and put them in a code snippet library. Then, always use the stored snippet when adopting a protocol.

轉載註明原文: UITableView不會進入“滑動刪除”模式