Possible Duplicate:
How to Dismiss a Storyboard PopoveriOS:如何关闭弹出
我有一个iPad故事板。将一个视图中的栏按钮项目拖动到另一个视图 - 并选择一个弹出窗口样式。当我按新酥料饼的观点是在酥料饼所示的按钮,但我有两个问题:
- 当我再次按下按钮,将显示酥料饼的视图的另一个实例 - 我可以看到,该黑色边框越来越黑暗。如果弹出窗口视图打开并按下按钮,弹出窗口视图应该关闭。我怎样才能做到这一点?
- 当前新的弹窗视图浮动到屏幕的按钮上,即使视图中的内容不高。我怎样才能控制popover视图的尺寸?
EDIT1:
我已经在控制器的从底部的黄色控制器图标拖动到另一个视图,这应该是酥料饼的内部产生一个SEGUE。这个弹出窗口的标识符是settingsPopover。
然后我做到这一点,IBAction为内部:
- (IBAction)settingsButtonTapped:(id)sender {
[self performSegueWithIdentifier:@"settingsPopover" sender:self];
}
但是这给了我这个错误:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UIStoryboardPopoverSegue must be presented from a bar button item or a view.'
有我创建了SEGUE在一个糟糕的方式或在调用performSegueWithIdentifier
错了吗?
EDIT2:
我创造了这个IBAction为:
- (IBAction)settingsButtonTapped:(id)sender {
if (_settingsPopover == nil) {
SettingsViewController* settingsView = [[SettingsViewController alloc] initWithStyle:UITableViewStylePlain];
self.settingsPopover = [[UIPopoverController alloc] initWithContentViewController:settingsView];
}
[self.settingsPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
它几乎工作,但一个缺点是,它是不是用我的故事板设计的UIView。例如,在我的故事板中,该视图将SettingsViewController类设计为分组表视图。有没有办法显示弹出窗口中的故事板而不是原始SettingsViewController实例中设计的UIView?
解决方案:
我创建了与标识 “settingsPopover” 故事板全球SEGUE。
- (IBAction)settingsButtonTapped:(id)sender {
if (self.settingsPopover==nil) {
[self performSegueWithIdentifier:@"settingsPopover" sender:sender];
}
}
#pragma mark - UIView
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"settingsPopover"]) {
self.settingsPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
self.settingsPopover.delegate = self;
}
}
#pragma mark - UIPopoverControllerDelegate
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
self.settingsPopover = nil;
}
我已经改变了发件人,但我仍然得到相同的异常。 – dhrm 2011-12-28 16:42:45
我的错误。当他们以这种方式呈现时,popover segues也需要一个定位点。在界面构建器中和属性检查器中选择你的segue,将一个连接从锚字段拖到你的栏按钮项。看这[截图](http://cl.ly/Cv2O)。 – 2011-12-28 16:56:06