天天看點

代碼 實作UIDatePicker控件 和 Tab Bar 視圖切換

  感覺代碼寫控件都一個理,先在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,如需轉載請自行聯系原作者

繼續閱讀