我正在使用presentModalViewController尝试在其他一些视图之上显示UIView。我从controller1调用presentModalViewController。我试图从controller2显示视图。
从controller1我按如下方式调用controller2:
- (void) someButtonPressed: (id)sender
{
MyController* controller2 = [ [ MyController alloc ] initWithNibName:nil bundle:nil ];
[self presentModalViewController:controller2 animated:YES];
//[self presentViewController:controller2 animated:NO completion:nil ];
}
在controller2中,我这样做:
- (void)viewDidLoad
{
[super viewDidLoad];
if (YES){
UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* master = (UIView*)[keyWindow viewWithTag:100]; // Master is the entire app, but always oriented so top left corner is 0,0.
UIView* newView = [ [ UIView alloc ] initWithFrame:CGRectMake(100, 100, 400, 400) ];
[self setView:newView ];
self.view.backgroundColor = [ UIColor clearColor ];
}
}
问题是第一个控制器的内容都没有显示出来。我希望以前的观点仍然可见。有没有办法让第二个控制器的视图看不见?我想这样做的原因是因为我希望第二个控制器/视图显示一个透明层,它将捕获所有触摸事件,而不会触及由controller1管理的视图。
非常感谢。
答案 0 :(得分:0)
将视图添加为子视图,该视图将起作用:
- (void) someButtonPressed: (id)sender
{
MyController* controller2 = [ [ MyController alloc ] initWithNibName:nil bundle:nil ];
[[self view] addSubview:[controller2 view]];
// [controller2 release] if you aren't using ARC
//[self presentModalViewController:controller2 animated:YES];
//[self presentViewController:controller2 animated:NO completion:nil ];
}
如果您在controller2中使用viewDidAppear,请将此行放在addSubView行之后:
[controller2 viewDidAppear:NO]
其他viewDid方法也是如此;)