我最近一直在做很多Objective-C編程,剛剛回到做更多的iPhone開發。我在其他語言/框架中使用MVC進行了大量編程,但我只想確保在iPhone開發中正確使用MVC。iPhone:正確使用視圖和視圖控制器
我創建了一個新的iPhone Utility應用程序,它創建兩個視圖:MainView和FlipsideView。兩者都有自己的控制器(FlipsideViewController和MainViewController)和XIB文件。
我一直在做的是將IBOutlet UIControl myControl
變量放在我的MainView.h或FlipsideView.h文件中,然後將Interface Builder中的控件綁定到這些變量。然後,我將任何IBAction SomeAction myAction
方法放在MainViewController.h和FlipsideViewController.h文件中,並將事件綁定到Interface Builder中的這些方法。
這似乎在概念上是正確的,但似乎會導致問題。假設我有一個按鈕,單擊它時會更改標籤的文本。因此,Controller不知道我的按鈕的OnTouchUp事件處理程序中標籤的變量名稱是什麼。所以我爲它做了一個@property
。但由於MainViewController.view
屬性的類型不是MyView
,所以無論何時嘗試從視圖控制器訪問這些屬性,都會收到警告或錯誤。
我這樣做是否正確?有一個更好的方法嗎?如果這是正確的,我如何正確使用這些變量而不會收到警告或錯誤?
感謝
這裏的一些代碼,顯示我在做什麼:
MainView.h
#import ...
@interface MainView : UIView
{
IBOutlet UILabel* label;
IBOutlet UIButton* button;
}
@property UILabel* label;
@property UIButton* button;
@end
MainViewController.m
-(void) buttonTouchUp:(id) sender
{
self.view.label.text = @"The button was pressed!"; //This gives error because label is not in the view structure or union
[self.view label].text = @"The button was pressed!"; //This gives a warning
}
我知道我能投的觀點是正確的類型,但這似乎是一個黑客工作。 我知道我可以忍受這個警告,但一個警告告訴我,我正在做一些我可能不應該做的事情。我不相信SDK會讓我不得不一直做這樣的事情。
我必須誤解View
應該是什麼,我錯誤地使用它。
「因此,控制器不知道標籤的變量名稱在我的按鈕的OnTouchUp事件處理程序中,因此我爲它創建了一個@property,但由於MainViewController.view屬性不是的類型MyView,每當我嘗試從視圖控制器訪問這些屬性時,我都會收到警告或錯誤。「 - 請你能發佈相關的代碼嗎? – 2010-03-27 19:02:37