gpt4 book ai didi

ios - 如何添加和删除 UIViewControllers 到其他 UIViewControllers

转载 作者:行者123 更新时间:2023-11-29 03:21:16 25 4
gpt4 key购买 nike

我有一个包含按钮的 UIViewController。当我按下按钮时,我使用以下内容添加一个 subview Controller 。

- (IBAction)loadEditScreen:(id)sender {

self.editViewController = [[EditViewController alloc] init];

[self addChildViewController:self.editViewController];
[self.editViewController didMoveToParentViewController:self];

self.editViewController.view.alpha = 0;
[self.editViewController.view setFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

[self.view addSubview:self.editViewController.view];

[self.editViewController setupImage:self.selectedImageView.image];

[UIView animateWithDuration:0.2
delay:0.0
options:0
animations:^{
self.editViewController.view.alpha = 1;

}
completion:^(BOOL finished){}];

}
- (void)closeEditScreen {

[self.editViewController willMoveToParentViewController:nil];
[self.editViewController.view removeFromSuperview];
[self.editViewController removeFromParentViewController ];

}

现在的问题似乎是我不确定如何在需要时删除 subview Controller 。在子 Controller 中,我有一个调用以下内容的按钮。

- (IBAction)closeEditScreen:(id)sender {

HomeViewController *tmpController = [[HomeViewController alloc] init];
[tmpController closeEditScreen];

/*[UIView animateWithDuration:0.2
delay:0.0
options:0
animations:^{
self.view.alpha = 0;
}
completion:^(BOOL finished){
[self didMoveToParentViewController:nil];
[self.view removeFromSuperview];
}];*/

}

问题似乎是该方法被调用,但实际上什么也没发生。即使我知道该方法正在运行, View 也不会被删除,因为我设置了断点。

任何帮助都会很棒。我只想添加一个 childviewcontroller,然后在 child 中有一个按钮,按下时删除 childviewcontroller。

提前致谢

最佳答案

EditViewController closeEditScreen: (子 VC)中,您正在创建 HomeViewController (父 VC)的新实例,并调用 closeEditScreen那个新实例。这是错误的,您不需要新实例。

您想要做的是在已经存在并创建子 VC 的 HomeViewController 实例上调用 closeEditScreen。试试这个:

- (IBAction)closeEditScreen:(id)sender
{
// This is the instance of HomeViewController that you need
UIViewController* parentViewController = self.parentViewController;
// Cast the type so that you can invoke closeEditScreen without a compiler warning
HomeViewController* parentHomeViewController = (HomeViewController*)parentViewController;
[parentHomeViewController closeEditScreen];
}

虽然这应该为您提供正确的 HomeViewController 实例来使用,但我不确定您删除子 VC 的方法是否可能没有其他问题。如果您确实遇到更多问题,那么您一定应该阅读 Cy-4AH 的答案中提到的 VC 编程指南。

关于ios - 如何添加和删除 UIViewControllers 到其他 UIViewControllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21062462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com