2.1 UIAlertView,UIActionSheet,UIDatePicker,UIPickerView使用的简单总结

最近学的四个控件UIAlertView,UIActionSheet,UIDatePicker,UIPickerView的使用总结部分。


一、UIAlertView部分

参考资料:http://my.oschina.net/u/2340880/blog/408873?p=1

效果就是弹出一个提示框(警告框),可以设置提示消息的内容,标题,按键数量等等。一般来说放在button的点击事件里会比较好?算是比较简单的一个控件嗯

初始化:


- (instancetype)initWithTitle:(NSString *)title message:(NSString*)message delegate:(id /*<UIAlertViewDelegate>*/)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles,...;


通过这个方法来设置标题,代理,取消按钮标题(按了使提示框消失),以及其他按钮的标题。

按钮数量多的场合,会排列成类似UITableView的样式

显示提示框:

UIAlertView *alert = [[UIAlertView alloc] init];

[alert show];


需要关注的还有UIAlertViewDelegate中的关于按钮点击事件的方法:


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;


通过这方法可以设置点击第几个按钮时实现的效果。其他的有关内容参考上面的网页嗯。




二、UIActionSheet部分

参考资料:http://blog.csdn.net/totogo2010/article/details/7618891

效果为从底部出现的一列按钮,并且可以为其添加各自的按钮事件。

初始化方式与AlertView类似

    UIActionSheet *actSheet = [[UIActionSheet alloc]initWithTitle:@"任务8的actionSheet" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"这是确定" otherButtonTitles:@"按钮1",@"按钮2",@"按钮233", nil];


按钮的最后一个title需要为nil

之后使用

[actSheet showInView:view ];

的方式使其显示。

设置按钮点击事件需要先添加协议UIActionSheetDelegate,设置的方式也和AlertView类似,


(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex  
{  
    if (buttonIndex == 0) {  
        //确定按钮  
    }else if (buttonIndex == 1) {  
       //第一个按钮
    }else if(buttonIndex == 2) {  
       //第二个按钮
    }else if(buttonIndex == 3) {  
       //取消按钮  
 }  


用这样的方法就能为其中的按钮添加事件了。




三、UIDatePicker部分

参考资料:http://justcoding.iteye.com/blog/1473352

一个日期选择器,其实就是一个系统自带的已经做好了的PickerView,但它是一个UIControl的子类,专门接受各种时间相关的输入。

初始化比较简单,使用:

UIDatePicker *datePicker = [[UIDatePicker alloc]init]

就可以,相当方便,并且提供了好几个日期选择的样式:

typedef enum {  
    UIDatePickerModeTime,           // 只选择时间
    UIDatePickerModeDate,           // 只选择日期
    UIDatePickerModeDateAndTime,    // 同时选择日期和时间  
    UIDatePickerModeCountDownTimer  // 选择小时和分钟(类似选择倒计时)  
} UIDatePickerMode;


通过:
dataPicker.date
可以读取到选择器选择的日期




四、UIPIckerView部分
参考资料:http://www.cocoachina.com/bbs/read.php?tid=182382
通过单列或者多列滚轮方式提供数据供用户选择来进行交互的一个选择器,可以自定义内容,改变样式,非常灵活的一个控件
使用的时候需要先添加协议以及数据源 <UIPickerViewDataSource,UIPickerViewDelegate>
并且应该设置数据源及协议

pickerView.dataSource
pickerView.delegate

那之后,通过这个方法设置列数:
(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

设置每列中有多少个数据:

(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 


设置每一行中具体显示的数据:

(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component


这样设置完毕后,一个单列/多列选择的选择器就完成了。可以实现基本的展示功能,但是因为每列间一般还会有分级的关系,可以通过以下方法来设置转动某一列时的事件。下面这部分直接复制【省/市/区】选择器中的这部分内容

(void)pickerView:(UIPickerView *)pickerView

      didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    if (component == 0) {

        NSInteger *selectedProvince = [pickerView selectedRowInComponent:0];

        cityArr = [[provinceArr objectAtIndex:selectedProvince]objectForKey:@"sub"];


        [pickerView selectRow:0 inComponent:1 animated:NO];

        [pickerView selectRow:0 inComponent:2 animated:NO];

        //转动时把第二列和第三列选择列数重置为0,否则容易出现数组越界


        NSInteger *selectedCity = [pickerView selectedRowInComponent:1];

        //读取第二列中选择的行数

        

        areaArr = [[cityArr objectAtIndex:selectedCity]objectForKey:@"sub"];

        [pickerView reloadComponent:1];

        [pickerView reloadComponent:2];


    } if(component == 1) {

        [pickerView selectRow:0 inComponent:2 animated:NO];


        NSInteger *seletedCity = [pickerView selectedRowInComponent:1];

        areaArr = [[cityArr objectAtIndex:seletedCity]objectForKey:@"sub"];

        [pickerView reloadComponent:2];

    }

}// 每列转动后的反应


注意到其中出现了selectRow,通过这个方法可以改变某一列的选择行数,因为直接改变某一列数据的话选择的行数是不会改变的,若改变后数据的行数小于当前行数,便会发生数组越界,这是必须避免的。

以后涉及到数组的场合都要注意这样的问题。


五、plist文件的读取
plist文件是保存数据的一种形式,当需要到的数据比较多的时候便可以把数据保存在plist文件中,在程序中直接读取,可以大大地减少程序的篇幅。
如何制作这里先跳过了,直接说读取吧
首先是需要一个NSString来读取文件的路径,
    NSString *plist = [[NSBundle mainBundle]pathForResource:@"address" ofType:@"plist"];
这样保存了路径之后,用一个字典把plist文件给复制进来:
    NSDictionary *dic = [[NSDictionary alloc]initWithContentsOfFile:plist];
之后就直接使用这个字典就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值