ios基礎之入門(一)

橙子瓣發表於2015-04-07

最近找到了一個可以接觸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];

 

 
 

相關文章