iOS 7弹出框不起作用
Posted
技术标签:
【中文标题】iOS 7弹出框不起作用【英文标题】:Ios 7 popover does not work 【发布时间】:2013-10-11 12:29:17 【问题描述】:我正在尝试更新我的应用程序以使其在 ios7 上正常运行。
在 iOS 5 和 6 中完美运行:
if ([segue.identifier isEqualToString:@"popover"])
FavoritesViewController *vc = segue.destinationViewController;
CGFloat width = 200.0;
CGRect rect = [vc.tableView rectForSection:[vc.tableView numberOfSections] - 1];
CGFloat height = CGRectGetMaxY(rect);
if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]])
_filterPopoverController = [(UIStoryboardPopoverSegue *)segue popoverController];
[_filterPopoverController setPopoverContentSize:CGSizeMake(width, height)];
[_filterPopoverController setDelegate:self];
我用它来检查它是否已经在屏幕上
- (IBAction)touchedFilterButton:(UIBarButtonItem *)sender
if (_filterPopoverController == nil)
[self performSegueWithIdentifier:@"popover" sender:self];
else
[_filterPopoverController dismissPopoverAnimated:YES];
_filterPopoverController = nil;
如果我删除这一行
_filterPopoverController = [(UIStoryboardPopoverSegue *)segue popoverController];
它可以工作,但我无法设置宽度/高度,并且没有检查它是否在屏幕上。
【问题讨论】:
【参考方案1】:问题是iOS7不是那么“宽容”
我打电话
_filterPopoverController = [(UIStoryboardPopoverSegue *)segue popoverController];
之后
CGFloat width = 200.0;
CGRect rect = [vc.tableView rectForSection:[vc.tableView numberOfSections] - 1];
CGFloat height = CGRectGetMaxY(rect);
高度始终为 0.000,因为它还没有“显示”,所以我必须在调用另一个视图控制器并设置宽度后替换 segue。 我删除了子类部分,因为它肯定已经是子类了
FavoritesViewController *vc = segue.destinationViewController;
_filterPopoverController = [(UIStoryboardPopoverSegue *)segue popoverController];
CGFloat width = 200.0;
CGRect rect = [vc.tableView rectForSection:[vc.tableView numberOfSections] - 1];
CGFloat height = CGRectGetMaxY(rect);
[_filterPopoverController setPopoverContentSize:CGSizeMake(width, height)];
[_filterPopoverController setDelegate:self];
【讨论】:
以上是关于iOS 7弹出框不起作用的主要内容,如果未能解决你的问题,请参考以下文章