如何通过Objective C中的tableview从NSArray中删除对象?

时间:2012-08-25 12:38:29

标签: objective-c uitableview nsarray

我首先想开始,我是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

1 个答案:

答案 0 :(得分: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];