我目前有一個UISplitViewController。我在主視圖控制器中有5行,並且每次點擊時都會將其各自的詳細視圖放在屏幕上。它基本上像某種菜單一樣工作。UISplitView - 如果有一個實例已經可見,如何防止加載詳細視圖的新實例?
我編碼它的方式是在didSelectRow:方法中。
下面是一個示例代碼
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if([indexPath row] == 0)
{
firstviewcontroller = [self.storyboard instantiateViewControllerWithIdentifier:@"firstviewcontroller"];
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:firstviewcontroller];
NSArray *vcs = [NSArray arrayWithObjects:[self navigationController], nvc, nil];
[[self splitViewController] setViewControllers:vcs];
[[self splitViewController] setDelegate:firstviewcontroller];
它基本上是對其他4行我也一樣。
現在,例如,如果第一行被點擊,它將顯示第一個控制器。當第一行再次點擊時,它將用新實例替換當前實例。
我該如何預防?當我在第一個視圖控制器中填寫細節時(例如textfields等),然後我意外地敲擊第一行,它取代當前實例並且所有文本域都是空的並且需要再次填寫時,真的很煩人。
我也想問問如何保留viewcontroller實例。例如,我填寫了第一個視圖控制器所需的數據,然後點擊第二行顯示第二個視圖控制器。當我再次點擊第一行時,我想讓我已經完成填充數據的第一個控制器的實例。(有點像Settings應用程序的工作方式)
是的,他說的。 – NovaJoe
感謝您的回答。這個對我有用。如果已經有一個,它不會創建詳細視圖的新實例,並且當我轉到另一個我想要的詳細視圖時,它會保留當前值。 – aresz
@NovaJoe不同之處在於,我的代碼將保留推送到splitViewController的任何視圖控制器的狀態,其中他唯一的狀態將保留當前狀態,然後僅當您不選擇顯示不同的狀態控制器。 – jamone