2016-11-16 99 views
0

我有兩個tableview控制器和一個詳細視圖下鑽tableview應用程序。數據模型是一個包含11個子類的類,每個數據段都有一個子類。所有的子類屬性都是字符串或包含一個字符串數組。沒有空的屬性。所有的子類都具有相同的屬性,但是其子類唯一的數據。我的想法是使用didSelectRow方法獲得一個indexpath.row整數,我將用它初始化相應的子類,並通過segue將其傳遞到第二個tableview控制器,該控制器將包含詳細視圖所需的所有數據。我知道如何使用segue來傳遞數據集合。但是,傳遞整個子類似乎涉及不同的方法。不知道如何解決這個問題。我是否需要在第二個視圖控制器中初始化一個類,該類具有與子類相同的屬性類型但不包含數據?第二個表視圖控制器中的初始化事件將發生在viewWillLoad方法中。我的假設是有人可能知道更好的方法。通過segue傳遞子類的最佳方式是什麼?

+0

「我知道如何使用segue來傳遞數據集合,但是傳遞整個子類似乎涉及到不同的方法。」爲什麼?除非它血淋淋的地獄般巨大,或者初始化速度很慢,那麼感覺到的問題是什麼?換句話說,你的問題背後的動機是什麼。 – Gruntcakes

+0

向下鑽取應用程序用於呈現具有11個部分的NH證據規則。大約有70多條規則。我以前的模型是一個嵌套字典,它的工作。我不得不初始化整個字典。字典初始化速度並不慢。我認爲對這11個部分中的每一個進行子類化將是一種更好的方式來利用分層數據,更容易跟蹤,更容易使用和更容易搜索。我不是爲了生活而編程,所以我一直在學習。任何想法都表示讚賞。 –

+0

聽起來像你想傳遞的類實際上只是數據的表示?在這種情況下,您可以研究走向不同的路線 - 將數據類移動到模型(如模型 - 視圖 - 控制器設計模式中),並使模型對兩個視圖控制器均可用。 (如果第一個VC需要將某些東西傳遞給第二個VC,它可以指示第二個VC需要訪問什麼數據,而不是完整的副本或引用,第二個VC將訪問模型中的類/數據) – Gruntcakes

回答

0

將數據從View控制器傳遞到另一個控件的標準方法是使用委託。聲明一個自定義協議,它具有您需要從第二個View控制器訪問的功能和屬性。這樣你將與第二個視圖控制器共享類實例。您可以在源視圖控制器中實現該協議,並在執行該搜索後將源視圖控制器的引用傳遞到第二個視圖。您將在源視圖控制器中聲明的函數prepare(for segue:UIStoryboardSegue,sender:Any?)中設置委託。這個函數在調用performSegue之後被調用。希望這會幫助你。

+0

您是指以下內容:http://stackoverflow.com/a/26089243/5521145我的另一個想法是通過performSegue將indexpath.row整數傳遞給第二個視圖控制器中的變量並在switch語句中使用它。匹配索引會初始化正確的子類。無論如何,這似乎是學習如何使用自定義協議的好機會。我會嘗試一下。謝謝! –

+0

這取決於你。我認爲這位代表是蘋果風格,在我看來,更優雅。但最終它是關於哲學的 – Sergiob

相關問題