Iphone [Tab Bar实现多view切换,Picker,DataPicter实现

用Tab Bar Controller处理IPhone多个view切换,

而且还附有创建空项目,picker和DataPicker的实现

具体步骤:

1.创建一个空项目,选择User Interface->View,命名为rootView。

2.然后在控件面板中拖一个Tab Bar Controller的控件,可以往里面添加Tab Button,将Tab Bar Controller的File's Owner改成AppDelegate,可以将其每一个Item View的Class属性改成对于的ViewController

3.在Appdelegate.m中设置根view

 
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
  4.     //通过目录导入xib文件中所有的内容  
  5.     NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"rootView" owner:self options:nil];  
  6.     NSLog(@"%@",arr);  
  7.     self.window.rootViewController = self.rootView;  
  8.     self.window.backgroundColor = [UIColor whiteColor];  
  9.     [self.window makeKeyAndVisible];  
  10.     return YES;  
  11. }  

4.DateViewPicker的实现

 

dateViewController.h:

 

  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface dataViewController : UIViewController  
  4. @property (retain, nonatomic) IBOutlet UIDatePicker *datePicker;  
  5. - (IBAction)click:(id)sender;  
  6. @property (retain, nonatomic) IBOutlet UILabel *lblShow;  
  7. @end  


dateViewController.m:

 

  1. #import "dataViewController.h"  
  2.   
  3. @interface dataViewController ()  
  4.   
  5. @end  
  6.   
  7. @implementation dataViewController  
  8.   
  9. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  
  10. {  
  11.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
  12.     if (self) {  
  13.         // Custom initialization  
  14.     }  
  15.     return self;  
  16. }  
  17.   
  18. - (void)viewDidLoad  
  19. {  
  20.     [super viewDidLoad];  
  21.     //self.datePicker.date = [NSData date];  
  22.     [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(changeDate) userInfo:nil repeats:YES];  
  23. }  
  24.   
  25. -(void)changeDate  
  26. {  
  27.     self.datePicker.date = [NSDate date];  
  28. }  
  29.   
  30. - (void)didReceiveMemoryWarning  
  31. {  
  32.     [super didReceiveMemoryWarning];  
  33.     // Dispose of any resources that can be recreated.  
  34. }  
  35.   
  36. - (void)dealloc {  
  37.     [_datePicker release];  
  38.     [_lblShow release];  
  39.     [super dealloc];  
  40. }  
  41. - (IBAction)click:(id)sender {  
  42.     NSData *date = self.datePicker.date;  
  43.     NSDateFormatter *formater=[[[NSDateFormatter alloc] init] autorelease];  
  44.     //设置日期格式  
  45.     formater.dateFormat = @"yyyy-MM-dd HH:mm:ss";//HH代表24时制,hh代表12时制  
  46.     NSString *str  = [formater stringFromDate:date];  
  47.     //设置时区  
  48.     formater.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"] autorelease];  
  49.     date = [formater dateFromString:@"2013-08-15 14:03:00"];  
  50.     NSLog(@"字符串转化成日期是:%@",date);  
  51.     NSLog(@"%@",str);  
  52.     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"当前时间" message:str delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];  
  53.     [alert show];  
  54.     self.lblShow.text = str;  
  55.       
  56. }  
  57. @end  


PickerView的实现:

 

viewController.h:

 

#import <UIKit/UIKit.h>

//注意:在使用pickerView的时候要将控件拖向File's Owner,将DataSourse和Delegate指向File's Owner,并且要实现他的两个协议

@interface SecondViewController :UIViewController<UIPickerViewDataSource,UIPickerViewDelegate>

@property (retain,nonatomic)IBOutletUIPickerView *picker;

- (IBAction)click:(id)sender;

@property(nonatomic,retain)NSArray *array;

@end

 

viewController.m:

 

  1. #import "SecondViewController.h"  
  2.   
  3. @interface SecondViewController ()  
  4.   
  5. @end  
  6.   
  7. @implementation SecondViewController  
  8.   
  9. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  
  10. {  
  11.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
  12.     if (self) {  
  13.         // Custom initialization  
  14.     }  
  15.     return self;  
  16. }  
  17.   
  18. - (void)viewDidLoad  
  19. {  
  20.     [super viewDidLoad];  
  21.     NSArray *arr = [NSArray arrayWithObjects:@"shanghai",@"nanjign",@"tianjin",@"nantong",@"beijing",nil];  
  22.     self.array = arr;  
  23. }  
  24.   
  25. - (void)didReceiveMemoryWarning  
  26. {  
  27.     [super didReceiveMemoryWarning];  
  28.     // Dispose of any resources that can be recreated.  
  29. }  
  30.   
  31. - (void)dealloc {  
  32.     [_picker release];  
  33.     [super dealloc];  
  34. }  
  35.   
  36. #pragma mark datasourse  
  37. //每个组件有多少行数据  
  38. -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component  
  39. {  
  40.     return [self.array count];  
  41. }  
  42. //PickerView有几个组件  
  43. -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView  
  44. {  
  45.     return 1;  
  46. }  
  47.   
  48. #pragma mark delegate  
  49. //每个组件中的每行显示什么数据  
  50. -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component  
  51. {  
  52.     return [self.array objectAtIndex:row];  
  53. }  
  54.   
  55.   
  56.   
  57. - (IBAction)click:(id)sender {  
  58.     int row = [self.picker selectedRowInComponent:0];//获得第几个组件中被选中的行数  
  59.     NSString *str = [self.array objectAtIndex:row];//通过第几行,在数据中获得被选中的字符串  
  60.       
  61.     UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"title" message:str delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];  
  62.     [alert show];  
  63. }  
  64. @end  

 

效果图:

 

如果有两个Component的话:

viewController.h:

 


 
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface FirstViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate>  
  4. @property (retain, nonatomic) IBOutlet UIPickerView *picker;  
  5. @property(nonatomic,retain)NSArray *array;  
  6. @property(nonatomic,retain)NSArray *array2;  
  7. - (IBAction)click:(id)sender;  
  8. @end  


viewController.m:

 

  1. #import "FirstViewController.h"  
  2. #define component_0 0  
  3. #define other_component 1  
  4. @interface FirstViewController ()  
  5.   
  6. @end  
  7.   
  8. @implementation FirstViewController  
  9.   
  10. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  
  11. {  
  12.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
  13.     if (self) {  
  14.         // Custom initialization  
  15.     }  
  16.     return self;  
  17. }  
  18.   
  19. - (void)viewDidLoad  
  20. {  
  21.     [super viewDidLoad];  
  22.     NSArray *array = [NSArray arrayWithObjects:@"上海",@"北京",@"天津",@"成都",@"台湾",@"香港",@"江苏",@"武汉",@"黑龙江",@"浙江", nil];  
  23.     self.array = array;  
  24.       
  25.     array = @[@"路飞",@"乔巴",@"香吉士",@"索隆",@"娜美",@"罗宾",@"乌索普",@"弗兰奇",@"骷髅头"];  
  26.     self.array2 = array;  
  27.     //用来设置默认选项  
  28.     [self.picker selectRow:2 inComponent:component_0 animated:YES];     
  29.     [self.picker selectRow:3 inComponent:other_component animated:YES];  
  30.   
  31. }  
  32.   
  33. //每个组件有几行数据  
  34. -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component  
  35. {  
  36.     //创建数据  
  37.     if(component == component_0)  
  38.     {  
  39.         return [self.array count];   //动态获取数字  
  40.     }else{  
  41.         return [self.array2 count];  
  42.     }  
  43. }  
  44.   
  45. #pragma mark delegate  
  46. //每个组件的每行显示什么数据  
  47. -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component  
  48. {  
  49.     if(component == component_0)  
  50.     {  
  51.         return [self.array objectAtIndex:row];  
  52.     }else{  
  53.         return [self.array2 objectAtIndex:row];  
  54.     }  
  55.       
  56. }  
  57.   
  58.   
  59. -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView  
  60. {  
  61.     return 2;  
  62. }  
  63. //当你对一个pickerView进行了一次操作之后都会被调用  
  64. -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component  
  65. {  
  66.     NSString *str = nil;  
  67.     if(component == component_0)  
  68.     {  
  69.         str = [self.array objectAtIndex:row];  
  70.     }  
  71.     else  
  72.     {  
  73.         str = [self.array2 objectAtIndex:row];  
  74.     }  
  75.     NSLog(@"%@",str);  
  76. }  
  77.   
  78. - (void)dealloc {  
  79.     [_picker release];  
  80.     [_array release];  
  81.     [_array2 release];  
  82.     [super dealloc];  
  83. }  
  84. - (IBAction)click:(id)sender {  
  85.     int row = [self.picker selectedRowInComponent:component_0];   //第几个组件中被选中的行数  
  86.     NSString * str = [self.array objectAtIndex:row];   //通过第几行,在数据中获得被选中的字符串  
  87.     row = [self.picker selectedRowInComponent:other_component];  
  88.     NSString *str1 = [self.array2 objectAtIndex:row];  
  89.       
  90.     NSString *str3 = [NSString stringWithFormat:@"%@ %@",str,str1];  
  91.       
  92.     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Title" message:str3 delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];  
  93.     [alert show];  
  94. }  
  95. @end  


posted @ 2013-08-16 09:32  蓬莱仙羽  阅读(349)  评论(0编辑  收藏  举报