2013-03-19 40 views
0

我在SO中發現this;它不完全回答我的問題,這是:有沒有辦法克隆 UITableView從一個控制器到另一個使用故事板並保持同步?如何將UITableView從一個控制器克隆到另一個控制器以保持同步?

+0

我沒有使用故事板,所以我不能確定,但​​大概你設置了表視圖的數據源和委託的地方?如果是這樣,如果您在所有情況下都使用相同的實例,那麼表視圖應該保持同步。 – 2013-03-19 16:53:01

+0

不能連接它們在IB - 不同的控制器... – SpokaneDude 2013-03-19 17:11:43

回答

1

您可以克隆它們在某種意義上說,他們的初始屬性值保持不變,如位置,佈局等。對於這一點,剛剛從故事板複製的UITableView,去到目的地視圖控制器並將它粘貼在那裏。

如果您共享兩個視圖控制器之間相同的UITableView對象,它仍然是可能的,但你必須估計你會多少工作要做自己。當一個視圖控制器完全處理一個表視圖時,大部分工作都是在引擎蓋下完成的,而表格則交給你。如果你的UITableView在兩個視圖控制器之間共享,你將不得不非常小心地使用它。您需要關注視圖的整個生命週期 - 請參閱通常的方法,如viewDidLoadviewDidAppear等。當你的觀點存在兩個場景時,你將如何照顧他們?也許你會創造出一種獨特的設計模式 - 如果你能找到最樂觀和程序化的方式來完成它。

通過故事板,您無法實現克隆,直到數據更改將無縫地反映在兩者之間。顧名思義,Storyboard就是一塊板子,在你的代碼接管之前,你可以畫出一些東西來了解它們最初的樣子。

爲了達到你想要什麼,你必須創建一個共享的模型,通過適當的委託方法更新了兩條表意見。很可能這樣的模型(NSArray,或任何這樣的集合,根據您的要求)可以駐留在共享類(應用程序委託不是錯誤的選擇),從你的視圖控制器可以引用它。這是一種整潔的做法,它不僅從編程的角度來看是對的,而且對任何時間處理代碼的人來說都是可擴展和有用的。

有關如何從模型更新UI的細節,沒有什麼比starting from scratch好,通過我指的是書去。

+0

優秀!特別是第4段!謝謝... – SpokaneDude 2013-03-19 22:34:23

+0

更不用說,您還可以使用觀察者模式讓您的UITableViewControllers知道您的共享模型的任何更改。這是很容易實現,閱讀Apple的文檔:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html#//apple_ref/doc/uid/20000219-CHDDBJEJ – 2013-03-20 05:17:34

0

不知道這種可能性

我會在不同的控制器之間傳遞tableview源對象,並讓視圖控制器處理它們自己的表視圖。

0

我認爲最好的辦法是使用一個框架,如免費提供明智的TableView,然後用同樣的模型都表視圖。這應該是非常簡單的。

相關問題