来自RootViewController类外部的deleteRowsAtIndexPaths

时间:2011-05-29 19:59:00

标签: iphone uitableview uibutton tableview

我正在使用XCode的基于导航的应用程序模板来创建以UITableView为中心的应用程序。我在删除tableView中的某些行时遇到一些问题。 在所有tableViews单元格中,我通过子类化UITableViewCell添加了一个按钮,如下所示:

TableViewCell.h:

@implementation TableViewCell
@synthesize button;  
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString*)reuseIdentifier
{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        RoutinesAppDelegate *appDelegate = (RoutinesAppDelegate *) [[UIApplication sharedApplication]delegate];

        // Initialization code
        button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
        [button setFrame:CGRectMake(320.0 - 90.0, 6.0, 80.0, 30.0)]; 
        [button setTitle:@"Done" forState:UIControlStateNormal];
        [button addTarget:appDelegate action:@selector(routineDone) forControlEvents:UIControlEventTouchUpInside];
        button.hidden = YES;
        [self.contentView addSubview:button];       
    }
    return self;
}

按下按钮时,将调用RoutinesAppDelegate.m中的方法“routineDone” 该方法如下所示:

RoutinesAppDelegate.m
-(void) routineDone  
{  
     if ([[NSFileManager defaultManager] fileExistsAtPath:[self todayListPath]])
     {
        int indexToRemove = buttonIndex + 1;

        todayListArray = [NSMutableArray arrayWithContentsOfFile:[self    todayListPath]];
        [todayListArray removeObjectAtIndex:indexToRemove];
        [todayListArray writeToFile:[self todayListPath] atomically:YES];
     }
}

此方法从tableView加载的数组中删除项。这很好。

我的问题: 单击按钮时,单元格不会从屏幕上移除。

在RoutinesAppDelegate.m中,我尝试使用

[tableView reloadData]

但它似乎不能从RootViewController类外部工作。

如果我能以某种方式使用deleteRowsAtIndexPaths方法会很好,但我不知道如何从RootViewController类中的commitEditingStyle外部调用该方法。

所以我的问题是:如何让细胞消失? :)

1 个答案:

答案 0 :(得分:0)

没有看到所有代码,很难说,但你可以尝试在

之后添加
        [todayListArray writeToFile:[self todayListPath] atomically:YES];
        [self.tableView reloadData];

此外,您不必保留该按钮,并且可能不必将其作为属性