0

我从控制器 A 添加了一个子视图。现在在作为子视图控制器的控制器 B 中,当用户完成 B 后,如何重新加载视图 A?我添加子视图的代码:

ChangeProfileImage *changeProfileImage =[[ChangeProfileImage alloc] init];  
    changeProfileImage.modalPresentationStyle = UIModalPresentationFormSheet;
    changeProfileImage.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    changeProfileImage.view.frame = CGRectMake(50, 50, 300, 300);  
    UIView *dimBackgroundView = [[UIView alloc] initWithFrame:self.view.bounds];
    dimBackgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];  
    [self.view addSubview:dimBackgroundView];
    [self.view addSubview:changeProfileImage.view];
4

2 回答 2

1

您可以为“dimbackground”设置标签 .. 并像这样删除它:

dimBackgroundView.tag = 111;//you will do this line when you create the view.
UIView *view = [controllerA.view viewWithTag:111];
[view removeFromSuperview];

刷新你的 viewController :

当用户单击提交按钮并删除 B 视图时.. 使用NSNotificationCenter如下方式发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"UserSubmit" object:nil];

并在 controllerA .. viewDidLoad 例如像这样将它添加为观察者

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshView) name:@"UserSubmit" object:nil];

你将实现这个功能:

- (void) refreshView
{
    //Do your stuff
}
于 2012-05-06T15:50:50.080 回答
0

在连接到 IBAction 的视图控制器 B 上创建一个按钮,在该按钮的 IBaction 中编写以下代码,这将删除视图控制器 B

[self.view removeFromSuperview];

于 2012-05-06T16:01:54.187 回答