我寻找插入和取消模式

时间:2012-03-31 15:20:26

标签: uitableview uinavigationbar

在使用UINavigationBar和UITableView时,我一直在寻找一个好的模式来实现插入然后取消模式。

我的TeamsViewController导航栏中有一个“插入”按钮(screenshot)

当我运行它时运行此代码:

-(void)insertTeam
{
    if( !detailViewController ) {
       detailViewController = [[TeamDetailViewController alloc] init];
    }

    if( !teams ) {
        teams = [NSMutableArray array];
    }
    Team *team = [[Team alloc] init];
    [teams addObject:team];
    int lastIndex = [teams count];

    [detailViewController setEditingTeam:[teams objectAtIndex:lastIndex - 1]];

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

    [self presentModalViewController:navigationController animated:YES];

}

如果用户填写所有信息,这是很棒的,但如果他们在下一个视图中点击取消,我的档案中就会有一个空对象。

我确信有一个很好的模式来实现这一目标,但我查看了所有的TableView示例代码,两本不同的ios书籍,并尝试使用Google搜索,但还没有找到适合的模式。

我的想法如下:

  1. 当用户取消时,将我的Team对象中取消的ivar设置为YES
  2. 回到我的TeamsViewController中,当出现视图时,检查我的teams数组中的最后一个对象,看看它的属性是否为YES,如果是,则删除最后一个对象。
  3. 但这看起来并不那么光滑,而且我想要有更好的方法来实现这一目标。 TIA。

1 个答案:

答案 0 :(得分:0)

我很想让TeamsViewController成为TeamDetailViewController的委托。委托将实现一个方法,如- (void)teamCreated:(Team *)team;,它将更新数组。由于似乎没有必要让数组中的Team不完整,我会让TeamDetailViewController创建Team并在委托调用中将其传回。在取消时,除了弹出控制器之外,不需要做任何事情。