2016-06-27 61 views
0

我正在製作一個iPad應用程序與地圖視圖控制器(如圖所示)。添加幾個彼此的兄弟姐妹VC,父母VC

用戶可以通過在地圖位置(如業務)上點擊並按住查看有關地圖的詳細信息,並出現DashboardViewController(橙色矩形)。

從儀表板中,用戶可以選擇查看其他相關數據集。 如果他們確實選擇查看其他數據,則會出現ToolbarViewController(黃色矩形)和SpreadsheetViewController(綠色矩形)。工具欄用於管理數據集,允許用戶使用上一個/下一個數據集填充電子表格,或添加/刪除數據片段。

儀表板,工具欄和電子表格視圖控制器之間相互通信很多,所以它們應該真正被認爲是兄弟姐妹,而不是父母 - 孩子之間的相互關係。

即使這些部分遮擋了地圖的某些部分,地圖仍然可以使用平移/縮放手勢進行觸摸。

最後,更改地圖的方向會導致3個部分(儀表板,工具欄,電子表格)調整/重新排列自己以適應新的方向。

另外,電子表格可以由用戶動態調整大小,因此可以用手指調整大小以使其延伸至屏幕底部。

部件的行爲方式,不規則的形狀,他們使當所有上顯示,並且在地圖上需要保持可平移/縮放,我需要保持這些零件彼此分開,而不是使一個單一的事實所有三個部分(儀表板,工具欄,電子表格)都使用UIView視圖控制器,將它們添加爲子視圖,然後在地圖上拍攝單個視圖。

鑑於這種情況,我假設在每個VC片上使用presentViewController毫無意義,因爲它是模態的,並且一次只允許三片中的一片可觸摸。它也表明了一個層次關係,在這些部分之間並不存在。

我想什麼,我需要在這種情況下做的是組裝這些碎片與addChildViewController加入他們每個人在地圖的視圖控制器,讓他們彼此的兄弟姐妹,但地圖的孩子。

這是一種可行的方法,還是我誤解了某些東西?

非常感謝。

enter image description here

回答

1

是的,你可以添加多個子視圖控制器單親視圖控制器。爲了您的解決方案,儘可能多地查看你想要的。

// view controller that we want to add 
let child1VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Child1VC") 

// create view section where we will add the child view controller 
let viewWhereIWillAddChild1VC = UIView(frame: CGRect(x:0, y:0, width: 200, height: 200)) 

// add view controller to parent view controller i.e. self 
self.addChildViewController(child1VC) 

// change frame of child view controller's view to be equal to frame of view where we will add it 
child1VC.view.frame = viewWhereIWillAddChild1VC.frame 

//adding view of child view controller to the designated view area 
viewWhereIWillAddChild1VC.addSubview(child1VC.view) 

//specifying is child is moved to parent view controller which is self 
child1VC.didMoveToParentViewController(self) 

//finally adding the designated view area in self where we kept child view controller's view 
self.view.addSubview(viewWhereIWillAddChild1VC) 

// now ADDING second view controller 

let child2VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Child2VC") 
let viewWhereIWillAddChild2VC = UIView(frame: CGRect(x:200, y:0, width: 200, height: 200)) 
addChildViewController(child2VC) 
child2VC.view.frame = viewWhereIWillAddChild2VC.frame 
viewWhereIWillAddChild2VC.addSubview(child2VC.view) 
child2VC.didMoveToParentViewController(self) 
self.view.addSubview(viewWhereIWillAddChild2VC)