以下代码应该弹出一个视图,并且应该按照我的代码自定义视图大小来自定义视图大小,但是当我运行它时,我看到它不是自定义的。
有人可以帮忙吗?
- (IBAction)barButtonLeft:(id)sender {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
_myViewController = [storyboard instantiateViewControllerWithIdentifier:@"Sort"];
_myViewController.modalPresentationStyle = UIModalPresentationPopover;
self.myViewController.modalPresentationStyle = UIModalPresentationFormSheet;
self.myViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
self.myViewController.preferredContentSize = CGSizeMake(139, 70);
[self presentViewController:_myViewController animated:YES completion:nil];
UIPopoverPresentationController *popController = [_myViewController popoverPresentationController];
}
答案 0 :(得分:0)
您在这里一起使用_myViewController
和self.myViewController
,这有点令人困惑,但是我假设您拥有一个由实例变量{{1}支持的属性myViewController
。 }?因此,我假设这两件事实际上都指向同一个实例。
为清楚起见,我建议您坚持使用一个或另一个属性访问权限。
如果它们都指向同一个实例,则上面的代码正在执行的操作是设置弹出显示样式,然后设置表单显示样式。您设置的最后一个将“获胜”,因此视图控制器将显示为表单表(在iPad上,这将是屏幕中间的一个框,在iPhone上,它将是全屏的)。
如果您在iPhone上运行此代码,则默认情况下,弹出式窗口无论如何都不起作用-它们将全屏显示。为防止这种情况,您需要为弹出式显示控件设置一个委托,实现_myViewController
,然后返回- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection;
。
在尝试进行演示之前,还必须在弹出式演示文稿控制器上设置源代码视图或工具栏按钮项,否则应用程序将崩溃。