私は基本的なポップオーバーのために簡単に呼び出すことができるポップオーバークラスを作成しました。データを与えてサイズを設定し、残りの作業を行う必要があります。サイズのないポップオーバー
これはiOS5までうまくいきましたが、今度はポップオーバーが開きますが、枠線だけで空白や内容は全くありません。
私は自分の道を捨てる可能性のあるアイディアを検索し、検索しました。
@protocol BasicPickerDelegate
- (void)basicPickerItemSelected:(NSMutableDictionary *)thisDic;
@end
@interface BasicPickerController : UITableViewController {
// data
IBOutlet NSMutableArray *theData;
// stuff to set
IBOutlet int myWidth;
IBOutlet int myHeight;
IBOutlet int myPopoverNum;
// delegate
id<BasicPickerDelegate> delegate;
}
@property (nonatomic, retain) IBOutlet NSMutableArray *theData;
@property (nonatomic, assign) IBOutlet int myWidth;
@property (nonatomic, assign) IBOutlet int myHeight;
@property (nonatomic, assign) IBOutlet int myPopoverNum;
@property (nonatomic, assign) id<BasicPickerDelegate> delegate;
- (void)setSize;
- (void)checkData;
@end
その後のsetSize機能は、のviewDidLoad
- (void)setSize {
if (!myWidth || !myHeight) {
NSLog(@"WIDTH AND HEIGHT NOT SET, SETTING DEFAULTS");
myWidth = 100;
myHeight = 100;
}
self.contentSizeForViewInPopover = CGSizeMake(myWidth, myHeight);
}
ですそれから私はこのようにそれを呼び出す:私はそれを実行すると
- (IBAction)showBasicPopover:(id)sender {
// Show Basic Popover - can be reused
if (basicPicker != nil) {
self.basicPicker = nil;
[self.basicPicker release];
}
self.basicPicker = [[[BasicPickerController alloc] initWithStyle:UITableViewStylePlain] autorelease];
basicPicker.delegate = self;
self.basicPickerPopover = [[[UIPopoverController alloc]
initWithContentViewController:basicPicker] autorelease];
// Give popover the data it needs
NSMutableDictionary *sizeDic = [self returnPopoverSize:[sender tag]];
self.basicPicker.myHeight = [[sizeDic objectForKey:@"height"] intValue];
self.basicPicker.myWidth = [[sizeDic objectForKey:@"width"] intValue];
self.basicPicker.myPopoverNum = [sender tag];
[basicPicker viewDidLoad];
self.basicPicker.theData = [self returnPopoverData:[sender tag]];
NSLog(@"giving popover dic (%d) with %d derps", [sender tag], [self.basicPicker.theData count]);
// Set display settings and show popover
[basicPicker viewWillAppear:YES];
CGRect popoverRect = [self.view convertRect:[sender frame]
fromView:[sender superview]];
[self.basicPickerPopover presentPopoverFromRect:popoverRect
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
、WIDTH AND HEIGHT NOT SET, SETTIN DEFAULTS
ダイアログが起動します。何らかの理由で、それが与えられた値を読むのではありません。たとえ私がそれを読むためにそれを得ることができるとしても、それらが有効であり、それらを上書きするとは思わない。
編集:だから、基本的に:
のsetSizeは、のviewDidLoadで呼び出されると、それは、幅と高さが何であるかを知りません。デフォルトを設定します。
viewDidLoadでsetSizeが呼び出されない場合は、「サイズなし」が表示されます。つまり、ポップオーバーの境界線はありますが、内容はまったくありません。
setSizeがviewWillAppear、viewDidAppear、またはそのようなもの(viewDidLoadの後)で呼び出された場合、実際にはpopoverのサイズは設定されません。
は、この使用してストーリーボードかいませんか? – Simon
いいえ、ストーリーボードはありません。 – Batnom
'[self.basicPickerPopover setPopoverContentSize:self.basicPicker.view.frame.size];'すでに試したことがありますか? (発表前) –