tra*_*per 5 objective-c uinavigationcontroller modalviewcontroller ios
这似乎是整个Apples应用程序中使用的模式; 通过模态视图创建新记录,需要保存或取消以继续,并且通过推入导航堆栈的视图来编辑记录.
基本上将我的ViewController复制为"添加"和"编辑"似乎并不正确,但推送和模态ViewControllers的工作方式有很多不同之处.
我应该怎么做才能覆盖两个基地?
-
差异包括.
当推入堆栈时,导航栏出现在视图的顶部,可以配置为包含取消/保存按钮.当以模态方式呈现时,情况并非如此,因此复制界面需要单独创建工具栏并关闭/保存添加到此的按钮.
当解除推送视图时,我们向导航控制器发送消息[self.navigationController popViewControllerAnimated:YES];,当解除模态视图时,我们向自己发送消息[self dismissModalViewControllerAnimated:YES];
您可以在InterfaceBuilder中添加UIToolbar,然后当self.navigationController不为nil时将其隐藏在viewDidLoad中。
至于解雇,你可能会这样:
- (void)didCancel {
[self.navigationController popViewControllerAnimated:YES] || [self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
如果您的视图控制器是导航控件的一部分,这将短路,否则使用dismissModalViewControllerAnimated。
这应该适用于您的取消按钮。对于您的保存按钮,调用某种委托方法很有用,例如:
- (void)didSave {
// do your saving juju here
if([self.delegate respondsToSelector:@selector(viewController:didSave:]) {
[self.delegate viewController:self didSave:whatJustGotSaved];
}
[self.navigationController popViewControllerAnimated:YES]; // noop if currently modal
}
Run Code Online (Sandbox Code Playgroud)
然后,在委托的实现中,您可以放置:
- (void)viewController:(UIViewController*)viewController didSave:(NSObject*)whatJustGotSaved {
// do stuff with parameters
[self.modalViewController dismissModalViewControllerAnimated:YES]; // noop if not modal
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |