我想請一些專家MVC設計反饋請:如何在另一個選項卡的viewcontroller中爲協議設置委託?
我有一個UITabBarController與2個選項卡,每個選項卡導致一個導航控制器與VC堆棧。
第一個選項卡路徑上的最後一個視圖控制器將顯示圖像。我希望將該圖像存儲在表格中並隨時查看第二個選項卡。
如何從第一個選項卡 - > NaVController->上一個VC(圖像VC)將此圖像發送到第二個選項卡 - > NavController->表VC?
我有幾個選擇:
1中創建tableVC一個類的方法,並有imageVC調用類的方法,並通過該圖像直接保存到用戶默認。這似乎違背了MVC
2-在imageVC中使用方法和委託屬性創建協議,並讓表VC使用該方法將圖像保存到數組中。這裏的問題是,要設置委託的唯一地方是在viewDidLoad中:
[[[[self.tabBarController.viewControllers objectAtIndex:0] viewControllers] objectAtIndex:1] setDelegate:self];
這裏的問題是,如果用戶選擇從一開始就第二個選項卡,應用程序會崩潰,因爲很明顯的viewControllers一直沒加載到導航堆棧中的第一個選項卡。同樣,如果用戶首先看到1個圖像,然後選擇第二個選項卡,它將執行並設置委託,但不保存第一個選定的圖像。
必須有一個更簡單的方法.....提前 KB
我認爲在MVC模型中,模型只能由VC使用。通過讓TableVC讀取SelectedImages,不會使這個模型對兩個MVC都可用嗎?謝謝您的幫助。 – Spectravideo328 2012-07-05 19:21:34
多個VC可以使用相同的模型。就像你的情況一樣,你有一個用於將數據添加到模型的VC,另一個用於將模型作爲表格查看。這完全正常。另一個例子:包含一些數字的電子表格和從這些數字繪製的圖表使用的是相同的模型,但它們是兩個完全不同的VC。 – Macondo2Seattle 2012-07-05 19:37:12
只是在這裏明確。你是說普通的模型類是一個具有類方法的類,它將被調用來設置和檢索圖像。從我所瞭解的MVC中,實例方法在這裏不起作用。 – Spectravideo328 2012-07-07 03:11:53