我有主信息中心(UITableViewController
),一旦我登录,我需要显示此页面,其中包含使用UIViewController
显示的欢迎讯息。
如何从我的ViewDidAppear()
方法中显示此弹出窗口?
使用以下代码且无效
-(void)viewDidAppear:(BOOL)animated{
popupObj= [self.storyboard instantiateViewControllerWithIdentifier:@"popup"];
[popupObj setModalPresentationStyle:UIModalPresentationCurrentContext];
}
请帮帮我..
我看到了几个stackoverflow链接
当我将代码更改为此代码时
-(void)viewDidAppear:(BOOL)animated{
popupObj= [self.storyboard instantiateViewControllerWithIdentifier:@"popup"];
// [popupObj setModalPresentationStyle:UIModalPresentationCurrentContext];
popupObj.modalPresentationStyle = UIModalPresentationOverCurrentContext;
popupObj.modalTransitionStyle = UIModalPresentationPopover;
[self presentViewController:popupObj animated:YES completion:nil];
}
现在我可以看到我的UIViewController
即将弹出,但现在UIViewController
以全屏视图显示。
但我只需要frame (320 , 320)
答案 0 :(得分:1)
popupObj= [self.storyboard instantiateViewControllerWithIdentifier:@"popup"];
popupObj.view.frame = CGRectMake(20, 200, 280, 168);
[self.view addSubview:popupObj.view];
[self addChildViewController:popupObj];
你可以添加UIViewController作为子视图并设置它的框架,使它看起来像弹出窗口。 希望这会对你有所帮助。
答案 1 :(得分:1)
我有两种方式,也许不是很好,但大部分时间都在工作。
首先,当第二个视图控制器出现时,显示第一个视图控制器的屏幕截图。像这样:
- (void)setBackGround {
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, [UIScreen mainScreen].scale);
[self.presentingViewController.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:NO];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.layer.contents = (__bridge id)(image.CGImage);
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (!_isShown) {
_isShown = YES;
[self setBackGround];
}
}
不要忘记设置" _isShown = NO"当init。
第二:你只能初始化一个视图,并在带有动画的视图控制器上显示它。代码:http://blog.moemiku.com/?p=101
我在博客上更新了一个示例。 Direct download url
答案 2 :(得分:0)
您的代码会创建视图控制器并设置其显示样式,但实际上并未显示它。要做到这一点,你现在需要这两行:
[self presentViewController:popupObj animated:true completion:nil];
答案 3 :(得分:0)
请在rootviewcontroller上设置导航控制器:
-(void)viewDidAppear:(BOOL)animated
{
popupObj= [self.storyboard instantiateViewControllerWithIdentifier:@"popup"];
[self.navigationController presentViewController:popupObj animated:YES completion:nil];
}
或者
-(void)viewDidAppear:(BOOL)animated
{
popupObj= [self.storyboard instantiateViewControllerWithIdentifier:@"popup"];
[self.view addSubview:popupObj.view];
}