IOS开发学习笔记(三)——例子的扩展

本文深入探讨了iOS开发中按钮点击事件的增强功能及Picker视图的使用,包括如何将输入内容显示在Label中、按钮点击后隐藏输入框的功能,以及Picker视图的配置、数据源和代理方法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面我们对上一篇文章进行扩展,上一篇文章是IOS开发学习笔记(二)——简单小例子


首先我们做个总结。为了实现一个简单的功能,IOS的开发步骤一般是:

  1. 编辑界面(xib文件);
  2. 对于需要操作属性和方法的控件,需要对ViewController添加一个属性,这个属性对应这个控件;
  3. 对于需要操作的事件添加处理方法;
  4. 编写事件处理事件代码;

下面我们对这个按钮点击事件增加功能:

首先我们将输入内容显示在Label中:

    NSString *str = [[NSString alloc] initWithFormat:@"Hello, %@", [myTextField text]];
    [myLabel setText:str];


如果需要添加按钮点击后,输入框隐藏的功能,则变为:

    NSString *str = [[NSString alloc] initWithFormat:@"Hello, %@", [myTextField text]];
    [myLabel setText:str];
    
    [myTextField resignFirstResponder];


下面我们学习Picker的使用:

我们在界面中增加一个DateTimePicker,设置属性Mode为Date。



接着我们添加一个Value Changed事件,代码如下:

    NSDate *date = [myDate date];
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy'-'MM'-'dd'"];
    
    NSString *dateStr = [formatter stringFromDate: date];
    
    
    [myLabel setText:dateStr];

接下来我们添加一个Picker View,这个用来显示自定义的数据:

  1. 首先我们添加一个Picker View;
  2. 为了让这个View知道下面的代理是哪个对象的,我们需要关联,拖动Pick View中的dataSource和delegate到File Owner上去建立联系;
  3. 接下来我们需要实现Delegate。Delegate实际上相当于Java/C++中的抽象类(abstract class),当一个类实现了Delegate的时候,需要实现接口定义的部分功能,这里之所以用了部分,是因为不是所以方法都需要实现的,同时需要指出的是一个类可以实现多个Delegate。具体工作就是在代码中加上"<>"之内的内容:
    @interface ViewController : UIViewController<UIPickerViewDataSource, UIPickerViewDelegate>

  4. 我们通过查阅这两个Delegate的帮助得知需要实现如下方法:
    注意@required关键字标识的必须实现的代码:
    @protocol UIPickerViewDataSource<NSObject>
    @required
    
    // returns the number of 'columns' to display.
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
    
    // returns the # of rows in each component..
    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
    @end

    我们定义一个ViewController的属性,并且在viewDidLoad中初始化:
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    	// Do any additional setup after loading the view, typically from a nib.
        dataArray = [[NSArray alloc] initWithObjects:@"zhangsan", @"lisi", @"wangwu", @"zhaoliu", @"qianqi", @"zhengba", nil];
    }


  5. 具体实现代码:

.h文件:

// return the colomns display
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
// return the item count
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component ;
// display title on each view item
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
// happens when select an item
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;

.m文件:

// return the colomns display
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}

// return the item count
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return [dataArray count];
}

// display title on each view item
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return [dataArray objectAtIndex:row];
}

// happens when select an item
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    UIColor *color;
    
    
    switch (row) {
        case 0:
            color = [UIColor redColor];
            break;
        case 1:
            color = [UIColor greenColor];
            break;
        case 2:
            color = [UIColor blueColor];
            break;
        case 3:
            color = [UIColor grayColor];
            break;
        case 4:
            color = [UIColor purpleColor];
            break;
            
        default:
            color = [UIColor yellowColor];
            break;
    }
    
    [[self view] setBackgroundColor: color];
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值