- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion
delegate
实现交互。例如使用UIImagePickerController从系统相册选取照片或者拍照,imagePickerController和弹出它的VC之间就通过UIImagePickerControllerDelegate实现交互的。Segue:多出现于UIStoryboard中,是不同类之间跳转的一根线。换种说法就是:Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue)
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
方法中在创建segue对象,并且设置segue对象里面的属性,来源,目的。具体步骤为:- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
方法中具体实现跳转功能。可以在这个方法中获取将要跳转到的控制器(segue.destinationViewController)
,并进行值传递。 + (instancetype)segueWithIdentifier:(nullable NSString *)identifier source:(UIViewController *)source destination:(UIViewController *)destination performHandler:(void (^)(void))performHandler NS_AVAILABLE_IOS(6_0);
- (instancetype)initWithIdentifier:(nullable NSString *)identifier source:(UIViewController *)source destination:(UIViewController *)destination NS_DESIGNATED_INITIALIZER;
总结:NavigationController直接控制ViewControllers,并包含NavigaitonBar。NavigaitonBar包含整个UINavigationItem的栈,管理整个NavigationController的UINavigationItem( NSArray *items 属性)。 UINavigationItem包含了NavigaitonBar视图的全部元素(如title,tileview,backBarButtonItem等),又受当前栈顶控制器管理,即NavigaitonBar形成整个NavigationController的导航视图,然后每个NavigationController页面的导航栏元素由所在页面的UINavigationItem管理。即设置当前页面的左右barbutton。
结构也类似NavigationController
iOS ViewController跳转界面的几种方法简单总结
原文:https://www.cnblogs.com/Free-Thinker/p/14440414.html