iOS 6 で正常に動作するカスタム ストーリー ボード セグエを実装しましたが、iOS 5.1 のシミュレーターでは何も起こりません。問題は、iOS 5.1 で popoverController が常に nil になることです!
@implementation PopoverFromRectSegue
-(id)initWithIdentifier:(NSString *)identifier
source:(UIViewController *)source
destination:(UIViewController *)destination {
if(self = [super initWithIdentifier:identifier
source:source
destination:destination]) {
}
return self;
}
- (void)perform {
UIPopoverController *popCtrl = ((UIStoryboardPopoverSegue *)self).popoverController;
id controller = [self sourceViewController];
if ([controller isKindOfClass:[UIViewController class]] && [controller respondsToSelector:@selector(popoverRect)]) {
[popCtrl presentPopoverFromRect:[[controller performSelector:@selector(popoverRect)] CGRectValue] inView:[controller view] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
}
@end
ヘルプ/ヒントをいただければ幸いです。
編集:新しいサンプルプロジェクトを作成しました。iOS5.1 では popoverController がカスタム UIStoryBoardSegues に設定されていないようです。他に何ができますか。通常のポップオーバーにはアンカーが必要ですが、プロトタイプの tableView セルは受け入れられず (コンパイル中の失敗)、ポップオーバーが表示される四角形を変更する方法が見つかりませんでした。