Apple的适用于iOS的View Controller编程指南states:
要关闭呈现的视图控制器,请调用呈现视图控制器的dismissViewControllerAnimated:completion:方法。您也可以在呈现的视图控制器本身上调用此方法。当您在呈现的视图控制器上调用该方法时,UIKit会自动将请求转发给呈现视图控制器。
这由UIViewController documentation验证:
呈现视图控制器负责解除它所呈现的视图控制器。如果您在呈现的视图控制器本身上调用此方法,UIKit会要求呈现视图控制器处理解雇。
然而,这种行为对我来说似乎含糊不清。如果UIViewController既呈现又呈现怎么办?如果您在其上拨打dismiss(animated:completion:)
,是否会将呼叫转接到presentingViewController
,这会将其解除,或者会将其解除presentedViewController
?
例如,假设我有一个UIViewController
vc1
,它会创建并显示UIViewController
vc2
,然后会创建并显示vc3
。因此vc1
vc2
为presentedViewController
,vc2
vc1
为presentingViewController
,vc3
为presentedViewController
vc3
} vc2
presentedViewController
为其dismiss(animated:completion:)
。然后在vc2
上调用vc2
。哪个被驳回,vc3
或vc2
?如果vc3
被解雇,with open("cobuy.txt", "r+") as my_file:
for item in my_file:
my_file.write("%s\n" % item)
text = open("obuy.txt").read()
text
会发生什么?