UIViewController 的 presentedViewController 和 presentingViewController

时间:2023-03-09 02:29:04
UIViewController 的 presentedViewController 和 presentingViewController
#import "TestViewController.h"
#import "OneViewController.h"

在TextViewController写入点击事件:

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self click];
}
- (void)click
{
    OneViewController * vc = [OneViewController new];

    [self presentViewController:vc animated:YES completion:nil];

    NSLog(@"%@",NSStringFromClass([self.presentationController class]));
    NSLog(@"%@",NSStringFromClass([self.presentedViewController class]));
    NSLog(@"%@",NSStringFromClass([self.presentingViewController class]));

    NSLog(@"%@",NSStringFromClass([vc.presentationController class]));
    NSLog(@"%@",NSStringFromClass([vc.presentedViewController class]));
    NSLog(@"%@",NSStringFromClass([vc.presentingViewController class]));

}

打印结果:

-- :::] _UIFullscreenPresentationController
-- :::] OneViewController
-- :::] (null)
-- :::] _UIFullscreenPresentationController
-- :::] (null)
-- :::] TestViewController

在OneViewController的ViewDidAppear写入:

- (void)viewDidAppear:(BOOL)animated
{

    NSLog(@"%@",NSStringFromClass([self.presentationController class]));
    NSLog(@"%@",NSStringFromClass([self.presentedViewController class]));
    NSLog(@"%@",NSStringFromClass([self.presentingViewController class]));

}

打印结果:

-- :::] _UIFullscreenPresentationController
-- :::] (null)
-- :::] TestViewController

总结:

presented 和 presenting 都是相对于当前UIViewController自己的。

我的理解,presented就是当前UIViewController有权利弹出的VC对象,presenting就是把当前UIViewController给弹出的对象。

我再理解了一下,presented就是当前UIViewController的儿子

        presenting就是当前UIViewController的老子

以上都是我的理解,希望前辈指点