簡體   English   中英

6個單獨的UIViewControllers還是僅一個具有不同數據源的對象決定在segue進行?

[英]6 separate UIViewControllers or just one with different data sources decided at segue?

我正在Swift中構建一個iOS應用程序,該應用程序的開始頁面包含6個按鈕。 這些按鈕中的每個按鈕都將連接到一個表視圖控制器,該控制器的數據由NSFetchedResultsController管理(應用程序使用核心數據)。 現在,我可以看到創建6個UITableViewControllers很容易,但是我想知道將每個按鈕發送到同一個UITableViewController並通過在prepareForSegue方法中設置某種標志來更改加載/管理的數據是否更明智?

這里的最佳做法是什么? 當6個tableViewController各自由其自己的NSFetchedResultsController時,每個對象所需代碼的大部分都可以重用並且可以被子類化並多次使用,這似乎很瘋狂。

我不知道這個問題是否會基於意見而結束,但這是我的想法:

絕對只使用一個視圖控制器並在prepareforsegue()更改了數據源

想象一下有6個不同的控制器,然后在6個月內決定要更改整個UI! 我做到了 不好看 這就是我重新配置所有內容並縮減視圖控制器總數的關鍵所在。

而且,甚至不必讓我開始必須在多個屏幕上進行自動布局的煩惱。 你知道我要去哪里。

如果您可以使用單個代碼庫以支持全部六個代碼的方式來編寫單個視圖控制器,則重用單個UITableViewController非常合理。 其他方法包括

  • 組合 -為數據源創建一個類,在打開表視圖之前進行配置,然后在segue上將其傳遞給表視圖
  • 子類化 -創建一個抽象的基本視圖控制器,並將其擴展六次。 覆蓋一兩個抽象方法以減少重復次數
  • Helper-創建一個類,其中包含六個視圖控制器之間共享的所有可重用邏輯,並從六個非常滑動的控制器中調用其方法。

您要避免的一件事是這樣的代碼:

if (viewControllerType == ViewControllerOne) {
     doSomethingSpecial()
} else if (viewControllerType == ViewControllerTwo) {
     doSomethingElseSpecial()
} ... // and so on

當您擁有這樣的連鎖店時,您會知道您錯過了細分的機會。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM