Objective c 没有尺码的府绸
我制作了一个popover类,我可以很容易地调用它来获得基本的popover——你给它数据并设置大小,它应该完成其余的工作 这在iOS5之前一直运行良好,现在popover打开了,但是只有边框,没有空白或内容 我搜索了又搜索,你能给我的任何想法都会很好Objective c 没有尺码的府绸,objective-c,size,uipopovercontroller,popover,Objective C,Size,Uipopovercontroller,Popover,我制作了一个popover类,我可以很容易地调用它来获得基本的popover——你给它数据并设置大小,它应该完成其余的工作 这在iOS5之前一直运行良好,现在popover打开了,但是只有边框,没有空白或内容 我搜索了又搜索,你能给我的任何想法都会很好 @protocol BasicPickerDelegate - (void)basicPickerItemSelected:(NSMutableDictionary *)thisDic; @end @interface BasicPick
@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
然后我这样称呼它:
- (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];
}
当我运行它时,会出现宽度和高度未设置,SETTIN DEFAULTS
对话框。出于某种原因,它没有读取给定的值。尽管有一些修改,但即使我能让它在里面读到它们,也不要认为它们是有效的,并覆盖它们
编辑:因此基本上:
在viewDidLoad中调用setSize时,它不知道宽度和高度是多少。因此它设置了默认值
如果在viewDidLoad中未调用setSize,则会出现“无大小”-即它有popover边框,但其中根本没有内容
当在ViewWillDisplay、ViewDidDisplay或诸如此类(在viewDidLoad之后)中调用setSize时,它实际上并没有设置popover的大小。最终解决了这个问题 我需要在创建popover之后但在初始化它之前分配宽度/高度变量 修订代码如下:
self.basicPicker = [[[BasicPickerController alloc] initWithStyle:UITableViewStylePlain] autorelease];
// Give popover the data it needs
basicPicker.delegate = self;
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];
// Now init
self.basicPickerPopover = [[[UIPopoverController alloc]
initWithContentViewController:basicPicker] autorelease];
[basicPicker viewDidLoad];
这是否使用故事板?您是否尝试过
[self.basicpickerpover setpopcovercontentsize:self.basicPicker.view.frame.size]代码>已经存在了吗?(演示前)
self.basicPicker = [[[BasicPickerController alloc] initWithStyle:UITableViewStylePlain] autorelease];
// Give popover the data it needs
basicPicker.delegate = self;
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];
// Now init
self.basicPickerPopover = [[[UIPopoverController alloc]
initWithContentViewController:basicPicker] autorelease];
[basicPicker viewDidLoad];