MVC是一種設計模式,所謂設計模式就是解決某一特定問題的方案。
MVC是解決具有UI的應用系統的成熟解決方案,在Cocoa應用系統中嚴格按照該模式實現。
M-Model(模型)是應用系統中與視圖對於部分的數據。
V-View(視圖)是應用系統中用戶看到並與之交互的界面。
C-Controller(控制器)是應用系統中起到控制器作用,接受用戶事件,顯示數據等,與視圖進行交互等。
採用MVC設計模式意味着,Interface Builder不需要編寫或生成任何代碼,您只需專注於應用程序的視圖。Mac的Cocoa綁定消除了大部分的黏合代碼,它就像連接在Xcode編寫的控制器和Interface Builder設計的視圖之間的一條線,用圖形化的表示方法簡化了二者之間的關係。
視圖控制器的方法:
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
//如果視圖使用NIB文件創建,在加載視圖之前調用這個方法,做一些初始化處理。
-(void)viewDidLoad
//視圖加載時候調用這個方法,一般不使用NIB文件創建視圖時候使用,而是通過代碼創建視圖對象。
-(void)viewDidLoad
//視圖加載之後調用此方法,常常在這個方法中做視圖初始化。
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
//用於處理屏幕旋轉的方法。
-(void)didReceiveMemoryWarning
//當系統內存告警的時候,調用的方法,一般在這個方法中釋放一些耗費資源的對象。
-(void)viewDidUnload
//視圖對象卸載的時候調用的方法,一般在把內存視圖中屬性設置爲nil的。
-(void)dealloc
//視圖對象內存釋放時候調用此方法,釋放成員變量。
使屏幕上的鍵盤消失的方法 小結:
1) 定義一個IBAction方法,在這個方法中,讓文本框放棄第一響應者,([textField resignFirstResponder]),然後將View的父類由UIView改成UIControll,在file’s owner中連線,選擇UIControll中的Touch Down方法即可。
2) 讓所定義的類遵循<UITextFieldDelegate>協議,在實現文件中寫上-(BOOL)textFieldShouldReturn:(UITextField*)textField{
[textField resignFirstResponder]; }, 然後將文本框的delegate連接到file’s owner上,即可點擊鍵盤上的Return鍵達到鍵盤消失的目的。
以後學習到新的可以讓鍵盤消失的方法,再補充。
二、控件的講解
1)、UIAlertView(對話框)控件
UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@”title” message:@”message” delegate:self cancelButtonTitle:@”cancel”,otherButtonTitles:@”other1”,@”other2”,@”ohter3”,nil];
[alertView show];
[alertView release];
這樣當對話框被觸發的時候,就會顯示出來,其中如果類遵從<UIAlertViewDelegate>協議,對話框中的按鈕就會有實際效果,通過協議中的 –(void)alertViet:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 這個方法就可以對對話框中的按鈕進行相應的操作,其中cancel的index是0,其他other1,other2,other3,等按鈕的index一次爲1,2,3,…。
當對話框消失的時候會調用:-(void)alertView:(UIAlertView*)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;
2)、UIActionSheet(下拉按鈕)控件
UIActionSheet* actionsheet = [[UIActionSheet alloc] initWithTitle:”title” delegate:self cancelButtonTitle:@”cancel” destructiveButtonTitle:”destructive” otherButtonTitles:@”other1”,@”other2”,@”other3”,nil];
[actionsheet showInview:self.view];
[actionsheet release];
爲了使用ActionSheet控件,需要在.h文件中遵循UIActionSheetDelegate協議,常常要實現actionSheet:didDismissWithButtonIndex方法,該方法時ActionSheet消失的時候調用。destructive的index是0,other1的index是1,cancel的index是最後一個。
3)、等待有關控件UIActivityIndicatorView (指示器)控件
使用方法是:在.h文件中聲明屬性和IBOutlet接口,在file’s owner中進行連線,常用的方法是:-(BOOL)isAnimating; //是否正在轉動
-(void)startAnimating; //開始轉動
-(void):stopAnimating; //停止轉動
4)、等待有關控件UIProgressView (進度條)控件
使用方法是:在.h文件中聲明屬性progressView和IBOutlet接口,在file’s owner中進行連線,需要使用定時器(NSTimer),NSTimer是可以隱式的啓動一個線程,類方法scheduledTimerWithTimeInteval指定線程要休眠多少時間調用一次,selector所指定的方法是要調用的方法,進度條有一個屬性是progress,表示的是進度條的值,下面看一個具體的實例:
timer = [NSTimer scheduledTimerWithTimeInteval:1.0f target:self selector:@selector(update) userInfo:nil repeats:YES];
- (void)update
{
progressView.progress +=1;
if(progressView.progress == 1) [timer invalidate];
}
UIProgressView控件的proress屬性是0.0 ~ 0.1範圍,0.0是開始的位置,1.0是結尾。
5)、開關控件
UISwitch(開關控件)在.h文件中聲明屬性switch1和IBOutlet接口,它有一個on屬性和isOn方法,表示開關當前的狀態,(YES或者是NO)。
UISlider(滑塊控件)在.h文件中聲明屬性slider和IBOutlet接口,常用的有三個屬性值value(表示當前滑塊的值)、maximumValue(滑塊的最大值)、minimumValue(滑塊的最小值)。滑塊值得取值範圍是0.0 ~ 1.0 。
6)、分段控件 UISegmentedControll
通過其屬性值selectedSegmentIndex來判斷所選的是哪一段,從0開始。