0

首先,我喜欢从我是 Objective C 的新手开始,这是我第一次使用它进行开发。出于某种原因,我陷入了如何从我的通道中删除对象NSArraymy tableview其中包含对象)的问题上。尝试了一些不同的东西,但似乎我有点卡住了......我应该在下面的代码中输入什么?

bookmarks.m

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]withRowAnimation:YES]; 
    [tableView reloadData];    
}

Bookmarks.h

#import <UIKit/UIKit.h>

#import "ShowTaskViewController.h"

#import "Bookmark.h"

@interface BookmarksViewController : UITableViewController  <UITableViewDelegate,UITableViewDataSource>
{
    NSArray *bookmarks;
}

@property (nonatomic, retain) NSArray *bookmarks;

@end
4

1 回答 1

1

tableView 不管理您的内容。你必须自己做。当用户在一行上点击删除时,您必须从数组中删除该项目并通知表格视图删除单元格(带有动画)。

我建议您将数据数组更改为 NSMutableArray。然后你可以这样做:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

    [bookmarks removeObjectAtIndex:indexPath.row];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                     withRowAnimation:YES]; 
}

或者,您可以临时创建一个 NSMutableArray。

NSMutableArray *mutableBookmarks = [NSMutableArray arrayWithArray:bookmarks];
[mutableBookmarks removeObjectAtIndex:indexPath.row];
self.bookmarks = [NSArray arrayWithArray:mutableBookmarks];
于 2012-08-25T12:45:09.997 回答