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