1

我有一個Master-Detail iOS應用程序,它由標準XCode模板和故事板構建而成。當用戶點擊主設備的UITableView中的「設置」項時,我需要在大多數項目上使用瀏覽器顯示視圖,以及設置窗體(使用FXForms)。iOS Master-Detail,如何在iPad中使用不同的detailViewControllers

我已經找到了一種方法,在iPhone中,但無法找到一個在iPad。在iPhone故事板中,我創建另一個視圖控制器,並從主控制器到新視圖控制器建立另一個連接。然後,我做的在didSelectRowAtIndexPath

if(indexPath.section == 0 && indexPath.row == 2) // settings 
    [self performSegueWithIdentifier:@"showSettings" sender:self]; 
else 
    [self performSegueWithIdentifier:@"showDetail" sender:self]; 

有了這個設置以下幾種觀點都到位,當我點擊設置。來回導航也有效。

但是,在iPad中,detailViewController似乎總是存在於SplitViewController的右側。如何修改故事板和/或代碼以將默認視圖切換到設置,然後再次切換回來?

我還發現XCode的默認模板爲iPad故事板創建了「關係」細節,這是iPhone故事板中沒有的類型,不能像iPhone案例中那樣將其命名爲「showSettings」或「showDetail」。

+0

您是否可以爲兩者使用相同的故事板?你不想要SplitView嗎?還是隻是想要替換SplitView而不是SplitView的一部分? – Shriike 2014-11-04 20:27:21

+0

XCode在標準Master-Detail示例中爲iPhone和iPad創建兩個不同的故事板。我沒有看到讓iPhone共享同一個故事板的方法,因爲iPhone中的Master-Detail就像是從一個全屏視圖切換到另一個全屏視圖,而iPad使用「側欄」式的Master。 我想找一種方法來取代iPad的一部分SplitView。 – 2014-11-04 20:44:24

+0

使用XCode 6,您可以爲iPhone和iPad使用單個Storyboard,如果您的目標iOS8您甚至可以在iPhone和iPad上使用UISplitViewController。 – 2014-11-06 08:16:04

回答

0

從評論到原帖我發現:

  1. 如果我定位到iOS 8,我可以使用相同的情節串連圖板爲iPhone和iPad,然後我可以使用「替換」塞格斯(現稱爲「顯示細節」segues)切換到另一個細節視圖。非常方便,但目前還不適用於iOS 7。

  2. 至於iOS 7,我可以使用segues來支持iPhone,而對於iPad,我必須做這樣的事情(FXForms,如果我使用整潔的庫來顯示帶有選項的視圖)。

所以我的代碼爲iPad(在- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath爲特定的行)。我確實備份了self.splitViewController.viewControllers的當前lastObject,以恢復Master中表格視圖的其他行。

FXFormViewController *controller = [[FXFormViewController alloc] init]; 
IBSettingsForm *settingsForm = [[IBSettingsForm alloc] init]; 
settingsForm.fontSize = 12; 
controller.formController.form = settingsForm; 

// this is created so that my new view would have a navigation bar  
UINavigationController *navigationController = [[UINavigationController alloc] init]; 
[navigationController pushViewController:controller animated:false]; 

self.splitViewController.viewControllers = [NSArray arrayWithObjects:[self.splitViewController.viewControllers objectAtIndex:0], 
    navigationController, nil]; 
相關問題