【问题标题】:IOS: open and close some view controllersIOS:打开和关闭一些视图控制器
【发布时间】:2012-02-20 08:02:41
【问题描述】:
在我的应用中,我有以下配置来打开我的视图控制器:
当我写 "pushViewController" 我使用导航控制器,当我写 "present" 我使用presentModalViewController。
firtsView -> (pushviewcontroller) -> secondOneView -> (present) -> thirdOneView -> (present) -> fourthView
firstView -> (pushviewcontroller) -> secondTwoView -> (present) -> thirdTwoView
这是我的应用程序组织视图控制器的方案。那么我的问题是:
从“fourthView”(即我从“fourthView”返回的时候)返回到“secondTwoView”的方法是什么?
有办法吗?
【问题讨论】:
标签:
ios
xcode
uiviewcontroller
uinavigationcontroller
presentmodalviewcontroller
【解决方案1】:
是的。
UIViewController 提供了不同的方法来关闭视图控制器,具体取决于您是否以模态方式呈现它。这些是:
-(void)dismissModalViewControllerAnimated:(BOOL)animated; // modal
-(void)dismissViewControllerAnimated:(BOOL)flag
completion:(void (^)(void))completion;
您需要一一解除它们。
另外,花点时间阅读 Apple 的View Programming Guide。
使用UINavigationController,您可以使用以下方式弹出到任何视图控制器:
-(NSArray *)popToViewController:(UIViewController *)viewController
animated:(BOOL)animated;
另外,另一种方法让你只弹出一个:
-(UIViewController *)popViewControllerAnimated:(BOOL)animated;
【解决方案2】:
如果你使用 presentViewController
我认为你必须一个一个地关闭 viewController
但如果你只是导航控制器,那么你可以弹出到你想要的视图控制器
【解决方案3】:
- 在thirdOneView的viewcontroller中,做dismissModalViewControllerAnimated:NO
- 在 secondOneView 的视图控制器中再次执行 dismissModalViewControllerAnimated:NO。
- 在 secondOneView 的 viewcontroller 中执行 popViewControllerAnimated:NO
- 在 firstView 的 Viewcontroller 中执行 pushViewController 到 secondTwoView
如果你想要一些动画。我建议使用 CoreAnimation 手动完成。自从
-(void)dismissViewControllerAnimated:(BOOL)flag
completion:(void (^)(void))completion;
仅在 iOS5 之后可用。