我有兩個tableview控制器和一個詳細視圖下鑽tableview應用程序。數據模型是一個包含11個子類的類,每個數據段都有一個子類。所有的子類屬性都是字符串或包含一個字符串數組。沒有空的屬性。所有的子類都具有相同的屬性,但是其子類唯一的數據。我的想法是使用didSelectRow方法獲得一個indexpath.row整數,我將用它初始化相應的子類,並通過segue將其傳遞到第二個tableview控制器,該控制器將包含詳細視圖所需的所有數據。我知道如何使用segue來傳遞數據集合。但是,傳遞整個子類似乎涉及不同的方法。不知道如何解決這個問題。我是否需要在第二個視圖控制器中初始化一個類,該類具有與子類相同的屬性類型但不包含數據?第二個表視圖控制器中的初始化事件將發生在viewWillLoad方法中。我的假設是有人可能知道更好的方法。通過segue傳遞子類的最佳方式是什麼?
回答
將數據從View控制器傳遞到另一個控件的標準方法是使用委託。聲明一個自定義協議,它具有您需要從第二個View控制器訪問的功能和屬性。這樣你將與第二個視圖控制器共享類實例。您可以在源視圖控制器中實現該協議,並在執行該搜索後將源視圖控制器的引用傳遞到第二個視圖。您將在源視圖控制器中聲明的函數prepare(for segue:UIStoryboardSegue,sender:Any?)中設置委託。這個函數在調用performSegue之後被調用。希望這會幫助你。
您是指以下內容:http://stackoverflow.com/a/26089243/5521145我的另一個想法是通過performSegue將indexpath.row整數傳遞給第二個視圖控制器中的變量並在switch語句中使用它。匹配索引會初始化正確的子類。無論如何,這似乎是學習如何使用自定義協議的好機會。我會嘗試一下。謝謝! –
這取決於你。我認爲這位代表是蘋果風格,在我看來,更優雅。但最終它是關於哲學的 – Sergiob
- 1. 通過Ajax調用傳遞ID的最佳方法是什麼?
- 2. 通過傳遞模型測試HTTPPOST請求的最佳方式是什麼?
- 3. 通過Zend通過電子郵件搜索的最佳方式是什麼?
- 4. 將值傳遞給模態的最佳方式是什麼?
- 5. 將DataTable傳遞到存儲過程的最佳方式是什麼?
- 6. 在存儲過程中傳遞表的最佳方式是什麼
- 7. 從PHP傳遞數組到MySQL存儲過程的最佳方式是什麼?
- 8. 將值從html頁面傳遞給java類的最佳方式是什麼?
- 9. 什麼是通過xls生成kml文件的最佳方式
- 10. 通過Facebook應用獲利的最佳方式是什麼?
- 11. 什麼是通過Qt播放音頻的最佳方式?
- 12. 通過JSON加載ASP.Net usercontrols的最佳方式是什麼?
- 13. 什麼是通過MPI發送OPENCV Mat的最佳方式
- 14. 什麼是再次通過腳本的最佳方式?
- 15. 通過jQuery發送PHP數組的最佳方式是什麼?
- 16. 通過PHP實現OpenSocial集成的最佳方式是什麼?
- 17. 什麼是通過DotNet webservice返回PDF的最佳方式?
- 18. 什麼是通過PHP顯示SQL表的最佳方式?
- 19. 通過WCF提供EF模型的最佳方式是什麼?
- 20. 通過PHP使用Twitter API的最佳方式是什麼?
- 21. 通過POST提交UL的最佳方式是什麼?
- 22. 通過segue傳遞數據
- 23. 通過C#中的web服務傳輸圖像的最佳方式是什麼?
- 24. 通過電線傳輸大型報告的最佳方式是什麼?
- 25. 通過ajax傳遞輸入的最佳方式
- 26. 通過PHP動態識別子域名的最佳方式是什麼?
- 27. 通過HTTP模擬過程調用的最佳/最RESTful方式是什麼?
- 28. 使用UITabBarControllers,在無法使用segue時傳遞數據的最佳方式是什麼?
- 29. 什麼是通過HTTP通過base64編碼發送文件的最佳方式
- 30. 什麼是將特定參數傳遞給方法的最佳方式
「我知道如何使用segue來傳遞數據集合,但是傳遞整個子類似乎涉及到不同的方法。」爲什麼?除非它血淋淋的地獄般巨大,或者初始化速度很慢,那麼感覺到的問題是什麼?換句話說,你的問題背後的動機是什麼。 – Gruntcakes
向下鑽取應用程序用於呈現具有11個部分的NH證據規則。大約有70多條規則。我以前的模型是一個嵌套字典,它的工作。我不得不初始化整個字典。字典初始化速度並不慢。我認爲對這11個部分中的每一個進行子類化將是一種更好的方式來利用分層數據,更容易跟蹤,更容易使用和更容易搜索。我不是爲了生活而編程,所以我一直在學習。任何想法都表示讚賞。 –
聽起來像你想傳遞的類實際上只是數據的表示?在這種情況下,您可以研究走向不同的路線 - 將數據類移動到模型(如模型 - 視圖 - 控制器設計模式中),並使模型對兩個視圖控制器均可用。 (如果第一個VC需要將某些東西傳遞給第二個VC,它可以指示第二個VC需要訪問什麼數據,而不是完整的副本或引用,第二個VC將訪問模型中的類/數據) – Gruntcakes