感覺代碼寫控件都一個理,先在ViewDidLoad中建立控件對象,然後初始化他的frame,在簡單的描叙下他們的相關屬性,最後在添加到視圖上;這樣控件就在視圖上顯示出來了;
UIDatePicker是一個用來選擇日期或設定日期的控件,他不是UIPickerView子類,而是UIControl的子類,當然它所依賴的類也是與實踐有關的類,NSDate;蘋果公司已經為你實作好了這個控件是怎麼實作的,它底層怎麼實作你不必了解,你隻需調用相關API就可以了;
上一文中寫了Navigation Bar 和ToolBar的視圖切換,這一節把Tab Bar視圖切換也加上,切換兩個不同格式下的月曆表,還是先把效果圖奉上吧(界面不咋好看):
前面兩個tab Bar item圖示是系統的圖示,後面一個是添加了一張背景圖檔,但是不知道問什麼沒有顯示,切換界面的兩個按鈕還是前面兩個Tab Bar Item;
1.建立一個新工程叫DatePickerDemo; File->New->Project ->single View Application -> next
然後在建立兩個ViewController分别叫FirstViewController和SecondViewController
2.設定UITabBarDelegate協定,在ViewController中,
3.在ViewController.m檔案的ViewDidLoad中建立初始化界面
[datePickersetDatePickerMode:UIDatePickerModeDateAndTime];設定月曆顯示模式,有四種模式
typedefenum {
UIDatePickerModeDateAndTime,
UIDatePickerModeTime,
UIDatePickerModeDate,
UIDatePickerModeCountDownTimer
} UIDatePickerMode;
4. 設定月曆控件的響應事件
這裡涉及到了一個NSDate向NSString的轉換問題
NSString向NSDate如何轉換
5.UITabBarDelegate的委托方法
在方法中我們看到有Item.tag是在ViewDidLoad給Tab Bar Item設定的tag,相當于給這個按鈕編了一個号碼,這個号碼代表這個按鈕;再點選不同按鈕的時候切換不同視圖,這個方法和上一部落格所用的視圖切換方法思想一樣,隻是沒有添加動畫效果,首先判斷第一個視圖父視圖是否為空,在判斷在試圖是否為空,為空則創新建立一個,初始化并把管理權交給該視圖控制器,移去原來的視圖,把現在視圖切換過去;
[self.view insertSubview:firstViewController.view atIndex:0];
[self.view addSubview:firstViewController.view];
在方法中我把第一個給注釋了,第一個是插入主視圖後面,出現的情況就是主視圖上的DatePicker把插入給覆寫了,顯示不出來,第二種是之間把切換的視圖放在主視圖上面,但是這個問題出來了,他把主視圖下面的Tab Bar給覆寫了,于是我把需要切換的視圖的frame高度設定成了460-44高度,在FirstViewController的ViewDidLoad方法中
- (void)viewDidLoad { [super viewDidL
oad]; // Do any additional setup after loading the view from its nib. self.view.frame = CGRectMake(0, 0, 320, 416); self.view.backgroundColor = [UIColor blueColor]; UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; // 設定datePicker顯示模式 [datePicker setDatePickerMode:UIDatePickerModeTime]; [self.view addSubview:datePicker]; }
在item.tag=2中,并未這樣做,隻是想做一下對比,在我們前面看見的這個界面的截圖并沒有完全顯示SecondViewController視圖上的内容,他被ViewController上的視圖覆寫了,在SeconViewController上的ViewDidLoad初始化是這樣的
該視圖應該顯示的是月曆模式截圖的第三種,隻有Date;
本文轉自新風作浪 51CTO部落格,原文連結:http://blog.51cto.com/duxinfeng/1208748,如需轉載請自行聯系原作者