0
我有我想用两个目的的物品详细视图一个UIView:创建可模态被呈现或推送到导航堆栈
1)来创建新的项 2)编辑一个现有项目
编辑时,视图将被推到导航堆栈上,从它的父级获取导航栏。
在创建项目时,我想以模态方式呈现视图,但顶部仍有一个导航栏,并带有“完成”和“取消”按钮。
我不希望看到有两个导航栏的视图,或没有。
我该如何实施?
我有我想用两个目的的物品详细视图一个UIView:创建可模态被呈现或推送到导航堆栈
1)来创建新的项 2)编辑一个现有项目
编辑时,视图将被推到导航堆栈上,从它的父级获取导航栏。
在创建项目时,我想以模态方式呈现视图,但顶部仍有一个导航栏,并带有“完成”和“取消”按钮。
我不希望看到有两个导航栏的视图,或没有。
我该如何实施?
为了做到这一点我:
删除从我的观点的导航栏。 以模态方式启动时,首先创建一个导航控制器,然后用我的视图作为根视图以模态方式显示导航控制器(即使我没有计划将其他任何东西推入堆栈)。因此,改变了这个:
StoreDetailView *storeDetailView = [[StoreDetailView alloc] initWithNibName:@"StoreDetailView" bundle:nil];
// ... configure the view, including setting delegate...
[self presentViewController:storeDetailView animated:YES completion: nil];
这样:
StoreDetailView *storeDetailView = [[StoreDetailView alloc] initWithNibName:@"StoreDetailView" bundle:nil];
// ... configure the view, including setting delegate...
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:storeDetailView];
[self presentViewController:navController animated:YES completion: nil];
然后在StoreDetailView,确定了导航栏应该是什么样子基础上,委托是否被设置:
if (self.delegate == nil) {
self.navigationItem.rightBarButtonItem = [self editButtonItem];
} else {
[self setEditing:TRUE];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done:)];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)];
}