2009-11-16 43 views
0

我正在使用UITabBarController來跟蹤應用程序的不同視圖。在一個視圖中,「測驗控制器」中,我讓用戶從分段控件中選擇數字,然後將它們的答案存儲在整數數組中。底部是一個'提交'按鈕,當它被擊中時,應該在另一個視圖中調用一個函數,以使用「結果控制器」顯示結果。我的問題是,如何處理類方法以允許分析結果並在「測驗控制器」調用時在「結果控制器」中設置UILabels?當UIButton被擊中時在其他類中調用函數

我擊中提交按鈕的代碼如下所示:

[ResultViewController calculateAndDisplayScores]; 

// swtich to results view 
mainDelegate.tabBarController.selectedIndex = 2; 

其中「ResultViewController」是我的「結果控制」的名稱。當我這樣做時,ResultViewController給了我一個錯誤,我認爲我不能在類方法中設置UILabel文本屬性。

回答

0

你並不是真的想要一個類方法。您需要某種方式來通知生活在您的標籤欄控制器中的ResultViewController的特定實例來更新自身。編譯器在抱怨你,因爲你在類上調用你的方法,而不是特定的實例。

要做到這一點,基於你已經發布的代碼最簡單的,最醜的方式,似乎是:

[(ResultViewController*)[mainDelegate.tabBarController.viewControllers objectAtIndex:2] calculateAndDisplayScores]; 

// switch to results view 
mainDelegate.tabBarController.selectedIndex = 2; 

但要做到這一點,正確的方式很可能是有某種信息所在的模型對象。您的數據輸入UI與模型進行通信以獲取當前數據,並推回用戶的編輯。然後,該模型可以通知任何感興趣的方(例如您的結果視圖控制器)新數據可用,並且他們應該相應地進行更新。該通知可能通過委託關係,使用NSNotificationCenter或其他您夢寐以求的方式完成。 (爲了論證的緣故,假設這是一個類方法,Objective-C中的類沒有真正的狀態,那麼類方法如何保留結果或更新UI?)

相關問題