源视图控制器与呈现视图控制器
source view controller vs. presenting view controller
我正在读一本书,其中指出源视图控制器不一定是呈现视图控制器。源 VC 是调用 presentViewController:...
方法的那个,呈现 VC(它的视图)是被呈现的遮盖的那个VC 查看。我想不出一个例子,其中呈现 VC 与来源 VC 不同。请提供一些。谢谢
书中的文字:
“原主持人:
presentViewController:animated:completion: 发送到的视图控制器。 Apple 有时将此视图控制器称为源; “原始演示者”是我自己的术语。
呈现的视图控制器设置为原始呈现器的呈现视图控制器。
呈现视图控制器:
呈现的视图控制器的 presentingViewController。这是视图控制器,其视图被呈现的视图控制器的视图替换或覆盖。默认情况下,视图控制器的视图是整个界面——即根视图控制器或已经存在的呈现视图控制器。它可能与原始演示者不同。
呈现的视图控制器被设置为呈现视图控制器的 presentedViewController。因此,呈现的视图控制器可能是两个不同视图控制器的呈现视图控制器。”
恐怕您正在阅读的这本书通过将所谓的源视图控制器添加到整个名称组合中,使一个复杂的主题变得更加复杂。
对于初学者来说,在视图控制器中没有 "Source" 这样的概念。在谈论 Container View Controllers. And you have a presentingViewController
and a presentedViewController
only when talking about presenting View Controllers modally 时,您有 parentViewController
和 childViewControllers
只有 。
您还有视图控制器,其主要目的是管理其他视图控制器,即导航控制器、选项卡栏控制器、拆分视图控制器和弹出框呈现控制器。因此,例如,任何给定的视图控制器都可以查询自身以了解它是否是 "attached" 到导航控制器。
我猜你的书暗示的是源 VC 会是使另一个 VC 出现在屏幕上的源。从这个意义上说,是对的。 "source" 可能与呈现的 VC 不同。拿这个片段:
[self presentViewController:aViewController animated:YES completion:nil];
在上面的例子中,呈现VC也是"source"VC。但是在这里:
[someViewController presentViewController:anotherViewController animated:YES completion:nil];
我们正在某处的某个 VC 上调用该方法,并传递另一个 VC 作为参数。所以在这种情况下 呈现 VC 是 someViewController
而 呈现 VC 是 anotherViewController
.如果这行代码在第三个 VC 内,那么第三个 VC 就是 "source"。
但事情就是这样!最后一段代码可能一开始甚至不在视图控制器中,所以想想有点奇怪"source VCs".
我在学习视图控制器转换时问过自己同样的问题,特别是在试图理解 UIViewControllerTransitioningDelegate
协议中的 animationControllerForPresentedController:presentingController:sourceController:
方法时。斗争是关于 presentingController
和 sourceController
论点之间的区别。
我在 View Controller Programming Guide 中找到了答案。您可以在 模态呈现视图控制器 部分中找到以下内容:
The view controller that calls the
presentViewController:animated:completion: method may not be the one
that actually performs the modal presentation. The presentation style
determines how that view controller is to be presented, including the
characteristics required of the presenting view controller. For
example, a full-screen presentation must be initiated by a full-screen
view controller. If the current presenting view controller is not
suitable, UIKit walks the view controller hierarchy until it finds one
that is. Upon completion of a modal presentation, UIKit updates the
presentingViewController and presentedViewController properties of the
affected view controllers.
这意味着 'source' 视图控制器概念不是您提到的那本书的作者随意创造的。
我正在读一本书,其中指出源视图控制器不一定是呈现视图控制器。源 VC 是调用 presentViewController:...
方法的那个,呈现 VC(它的视图)是被呈现的遮盖的那个VC 查看。我想不出一个例子,其中呈现 VC 与来源 VC 不同。请提供一些。谢谢
书中的文字:
“原主持人: presentViewController:animated:completion: 发送到的视图控制器。 Apple 有时将此视图控制器称为源; “原始演示者”是我自己的术语。 呈现的视图控制器设置为原始呈现器的呈现视图控制器。
呈现视图控制器: 呈现的视图控制器的 presentingViewController。这是视图控制器,其视图被呈现的视图控制器的视图替换或覆盖。默认情况下,视图控制器的视图是整个界面——即根视图控制器或已经存在的呈现视图控制器。它可能与原始演示者不同。 呈现的视图控制器被设置为呈现视图控制器的 presentedViewController。因此,呈现的视图控制器可能是两个不同视图控制器的呈现视图控制器。”
恐怕您正在阅读的这本书通过将所谓的源视图控制器添加到整个名称组合中,使一个复杂的主题变得更加复杂。
对于初学者来说,在视图控制器中没有 "Source" 这样的概念。在谈论 Container View Controllers. And you have a presentingViewController
and a presentedViewController
only when talking about presenting View Controllers modally 时,您有 parentViewController
和 childViewControllers
只有 。
您还有视图控制器,其主要目的是管理其他视图控制器,即导航控制器、选项卡栏控制器、拆分视图控制器和弹出框呈现控制器。因此,例如,任何给定的视图控制器都可以查询自身以了解它是否是 "attached" 到导航控制器。
我猜你的书暗示的是源 VC 会是使另一个 VC 出现在屏幕上的源。从这个意义上说,是对的。 "source" 可能与呈现的 VC 不同。拿这个片段:
[self presentViewController:aViewController animated:YES completion:nil];
在上面的例子中,呈现VC也是"source"VC。但是在这里:
[someViewController presentViewController:anotherViewController animated:YES completion:nil];
我们正在某处的某个 VC 上调用该方法,并传递另一个 VC 作为参数。所以在这种情况下 呈现 VC 是 someViewController
而 呈现 VC 是 anotherViewController
.如果这行代码在第三个 VC 内,那么第三个 VC 就是 "source"。
但事情就是这样!最后一段代码可能一开始甚至不在视图控制器中,所以想想有点奇怪"source VCs".
我在学习视图控制器转换时问过自己同样的问题,特别是在试图理解 UIViewControllerTransitioningDelegate
协议中的 animationControllerForPresentedController:presentingController:sourceController:
方法时。斗争是关于 presentingController
和 sourceController
论点之间的区别。
我在 View Controller Programming Guide 中找到了答案。您可以在 模态呈现视图控制器 部分中找到以下内容:
The view controller that calls the presentViewController:animated:completion: method may not be the one that actually performs the modal presentation. The presentation style determines how that view controller is to be presented, including the characteristics required of the presenting view controller. For example, a full-screen presentation must be initiated by a full-screen view controller. If the current presenting view controller is not suitable, UIKit walks the view controller hierarchy until it finds one that is. Upon completion of a modal presentation, UIKit updates the presentingViewController and presentedViewController properties of the affected view controllers.
这意味着 'source' 视图控制器概念不是您提到的那本书的作者随意创造的。