在使用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搜索,但还没有找到适合的模式。
我的想法如下:
但这看起来并不那么光滑,而且我想要有更好的方法来实现这一目标。 TIA。
答案 0 :(得分:0)
我很想让TeamsViewController成为TeamDetailViewController的委托。委托将实现一个方法,如- (void)teamCreated:(Team *)team;
,它将更新数组。由于似乎没有必要让数组中的Team不完整,我会让TeamDetailViewController创建Team并在委托调用中将其传回。在取消时,除了弹出控制器之外,不需要做任何事情。