2013-10-11 113 views
0

我正在尝试更新我的应用程序,以便它可以在iOs7上正常工作。Ios 7 popover不起作用

在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];