【发布时间】:2014-10-12 12:17:26
【问题描述】:
子视图控制器可以“关闭自己”吗? .....
您有一个视图控制器“RedMessage”。你有一个普通的强大属性......
@property (strong) RedMessage *red;
您将它(“模态”)添加到您当前的 VC 之上...
self.red = (RedMessage *)[self.storyboard
instantiateViewControllerWithIdentifier:@"RedMessageID"];
self.red.view.frame = self.view.frame;
[self.view addSubview:self.red.view];
[self addChildViewController:self.red];
[self.red didMoveToParentViewController:self];
要稍后摆脱它,请执行此操作
[self.red willMoveToParentViewController:nil];
[self.red.view removeFromSuperview];
[self.red removeFromParentViewController];
但事实上,你需要这样做吗??
[rm willMoveToParentViewController:nil];
[rm.view removeFromSuperview];
[rm removeFromParentViewController];
rm = nil;
你需要“= nil;”吗?
请注意,这个问题很关键,因为:如果您不必将其设为 nil,则可以在新视图控制器中执行以下操作...
-(void)dismissMyselfCompletely
{
[self willMoveToParentViewController:nil];
[self.view removeFromSuperview];
[self removeFromParentViewController];
}
非常方便。
简而言之,如果您在新的顶视图控制器中执行此操作 - 它会“工作”,是否会释放 VC?
当removeFromParentViewController发生时,父VC是否明白可以释放self.red?
【问题讨论】:
-
赏金供权威参考。
-
很抱歉提供自己的答案,但我们确实对其进行了广泛的测试并发现答案中给出的结果......希望它对某人有所帮助!
标签: ios uiviewcontroller