Gre*_*reg 4 iphone uiviewcontroller uinavigationcontroller modalviewcontroller ios
任何人都明白为什么在CoreDataBooks示例代码中:
(a)控制器交换差异的方法
虽然单击一个项目并转到详细视图使用了似乎是" pushViewController " 的标准UINavigationController概念,但当您单击"添加"新记录按钮时,它会启动新视图以通过" presentModalViewController "添加记录"接近?也就是说,这两种方法都不一样,只是使用pushViewController方法?
使用每种方法实际上是否有任何优势?我不太明白.我猜想苹果必须为不同的场景选择不同的方法.例如:
他们会看到与用户的任何差异(即UI差异或功能差异)?
开发人员的任何差异(或优点/缺点)
例如,如果你要考虑使用pushViewController方法,而不是针对的presentModalViewController方法为"添加"的情景......
(b)数据共享方法的差异
他们如何共享共同数据对象的方法似乎有所不同 - 所以再次只是想知道为什么这些方法不一样?(即在两种情况下,主控制器暂时传递到另一个视图,并且它们之间存在一些共享数据 - 即子视图需要传递回父级)
代码提取便利性
这是为了"编辑":
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Create and push a detail view controller.
DetailViewController *detailViewController = [[DetailViewController alloc] initWithStyle:UITableViewStyleGrouped];
Book *selectedBook = (Book *)[[self fetchedResultsController] objectAtIndexPath:indexPath];
// Pass the selected book to the new view controller.
detailViewController.book = selectedBook;
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
Run Code Online (Sandbox Code Playgroud)
但是对于"添加"
- (IBAction)addBook {
AddViewController *addViewController = [[AddViewController alloc] initWithStyle:UITableViewStyleGrouped];
addViewController.delegate = self;
// Create a new managed object context for the new book -- set its persistent store coordinator to the same as that from the fetched results controller's context.
NSManagedObjectContext *addingContext = [[NSManagedObjectContext alloc] init];
self.addingManagedObjectContext = addingContext;
[addingContext release];
[addingManagedObjectContext setPersistentStoreCoordinator:[[fetchedResultsController managedObjectContext] persistentStoreCoordinator]];
addViewController.book = (Book *)[NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:addingContext];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addViewController];
[self.navigationController presentModalViewController:navController animated:YES];
[addViewController release];
[navController release];
}
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以使用模态视图控制器将用户的注意力集中在任务上.当您推送时,用户处于某种导航流程中,但仍然可以轻松获得总应用程序.他们可能决定前进或后退,切换到中间的不同选项卡,无论如何.当他们得到一个模态视图控制器时,他们不能做任何这个,直到任务完成或取消(模态视图被解除)
| 归档时间: |
|
| 查看次数: |
5100 次 |
| 最近记录: |