ios基础之入门(一)

最近找到了一个可以接触ios开发的职位,可以系统的学习和练习了。先从最基本的开始:

一、获取控件的两种方式

1)第一种,也是经常使用的一种,通过IBOutlet方式。直接按住control键,将控件和ViewController建立联系,然后就可以通过Controller的属性来获取控件

2)第二种,通过设置控件的tag属性。

先设置控件的tag属性为一个integer类型的值,然后在代码中获取

1 UILabel *lbl2 = (UILabel*)[self.view viewWithTag:2];

二、事件处理的三种方式

1)第一种,最常使用的是通过IBAction的方式

2)第二种,通过代码设置事件处理方法

在viewDidLoad事件中调用addTarget:action:forControlEvents来添加处理事件,

addTarget:表明以改对象的某个方法来处理事件,例如当前controller

action:代表处理事件的方法

forControlEvents:要处理的事件类型,一个UIControlEvents的枚举值

例子:

- (void) viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"页面加载完成");
    AppDelegate *ad = [UIApplication sharedApplication].delegate;
    NSLog(@"打印代理类的lycname属性%@", ad.LycName);
    
    //给控件添加事件
    [self.btnMeet addTarget:self action:@selector(btnMeet_click:) forControlEvents:UIControlEventTouchUpInside];
}

-(void) btnMeet_click:(UIButton *) sender
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"我是遇见按钮"  delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
    [alertView show];
}   

3)通过委托对象来处理事件

上两种事件处理针对的都是主动控件,即继承自UIControl:UIView的控件。

而如果是UITextView这种控件,是继承自UIScrollView:UIView,所以它本身并不具备一些常见事件,在这种情况下,就需要委托对象来处理特殊事件。

例如刚刚提到的UITextView控件,它的默认事件有:

-textViewShouldBeginEditing:将要开始编辑时触发

-textViewDidBeginEditing:开始编辑后触发

-textViewShouldEndEditing:将要结束编辑时触发

-textViewDidEndEditing:结束编辑后触发

-textViewDidChange:文本内容发生改变后触发

要实现上面的事件处理,必须要实现UITextViewDelegate协议

1 @interface UITextFieldViewController : UIViewController<UITextViewDelegate>
2 //属性
3 @property (strong,nonatomic) UIBarButtonItem *doneRightBI;//右侧导航条按钮-完成
4 @property (strong,nonatomic) UIBarButtonItem *commitRightBI;//右侧导航条按钮-提交
5 
6 @end
@implementation UITextFieldViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.txtContent.delegate = self;
    
    if (self.navigationItem != nil) {
        [self.navigationItem setTitle:@"文本框演示"];
        
        //初始化右侧导航按钮-提交按钮
        UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc] initWithTitle:@"提交" style:UIBarButtonItemStyleDone target:self action:@selector(registerUserHandler)];
        
        self.commitRightBI = rightBtn;
        //设置当前右侧按钮为提交按钮
        [self.navigationItem setRightBarButtonItem:self.commitRightBI];
        
        //初始化右侧导航按钮-完成按钮
        UIBarButtonItem *rightDoneBtn = [[UIBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStyleDone target:self action:@selector(resignFirstReponderHandler)];
        self.doneRightBI = rightDoneBtn;
        
    }
    
}
//上面的按钮处理事件(registerUserHandlerresignFirstReponderHandler)就不列出来了
@end
 1 //文本框开始编辑时触发
 2 -(void) textViewDidBeginEditing:(UITextView *)textView
 3 {
 4     NSLog(@"开始编辑本文域");
 5     if (self.navigationItem != nil)
 6     {
 7         [self.navigationItem setRightBarButtonItem:self.doneRightBI animated:NO];
 8     }
 9 }
10 
11 //文本框结束编辑时触发
12 -(void) textViewDidEndEditing:(UITextView *)textView
13 {
14     NSLog(@"结束编辑本文域");
15     [self resignFirstReponderHandler];
16     if (self.navigationItem != nil)
17     {
18         [self.navigationItem setRightBarButtonItem:self.commitRightBI animated:NO];
19     }
20 }

这样,通过上面的代码,当UITextView在不同状态时,右侧的导航按钮也会相应的改变

三、通过代码创建控件

1、创建UI控件

2、调用addSubView将创建的控件添加到其他view中

3、多次调用控件的setter方法,设置外观、行为等

例子:

    //用代码创建一个控件
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    //设置button的大小
    button.frame=CGRectMake(120, 100, 120, 40);
    [button setTitle:@"我是代码创建的" forState:UIControlStateNormal];
    [self.view addSubview:button];
 
 
原文地址:https://www.cnblogs.com/chengzi/p/4398189.html