如何以编程方式从故事板中的视图控制器加载弹出窗口。

时间:2013-07-08 08:29:29

标签: ios objective-c storyboard popover

当用户点击按钮时,我正在从集合视图单元格加载弹出窗口。我设法让popover工作,但我不知道如何加载我在故事板中设置的视图控制器。

这是给我一个popover的代码。如何从故事板加载视图控制器?

self.popoverContent = [[PopOverViewController alloc]initWithNibName:@"UpcomingCells" bundle:nil];


UIView *popoverView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 300)];


[popoverView setBackgroundColor:[UIColor colorWithRed:224/256.0 green:45/256.0 blue:117/256.0 alpha:1.0]];



self.popoverContent.view = popoverView;

self.popoverContent.contentSizeForViewInPopover = CGSizeMake(200, 300);

self.contactPopover =[[UIPopoverController alloc] initWithContentViewController:self.popoverContent];

[self.contactPopover presentPopoverFromRect:self.remindButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES ];

[self.contactPopover setDelegate:self];

1 个答案:

答案 0 :(得分:2)

文档非常明确,你应该使用

-instantiateViewControllerWithIdentifier:;

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIStoryboard_Class/Reference/Reference.html

因此,假设您需要将viewController加载到self.popOverContent中,那么

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"nameOfStoryboard" 
                                                     bundle:nil];
self.popoverContent = [storyBoard instantiateViewControllerWithIdentifier:@"nameOfViewController"];

只需将nameOfViewController和nameOfStoryboard替换为实际名称;)

编辑: 故事板名称只是stoyboard文件的名称,减去了扩展名。 所以对于“myStoryboard.storyboard”,你只需使用“myStoryboard”。 您还需要为viewController设置stoyboard-Identifier。它名为stryboard-id,右下方是您在view -troller中为viewController设置类名的地方。