Cocoa Touch 入门记——《精通 iOS 开发》学习心得(1)

Cocoa Touch 入门记——《精通 iOS 开发》学习心得(1)

首先是熟悉 Xcode 界面。因为这本书的 Xcode 版本并不是最新版,而我的 MacBook 上已经装了 Xcode 5.0,所以带来了一些不便。Xcode 5.0 在创建 Single View Application 时会默认创建 Storyboard ,而这本书上刚开始是先用 xib 来做界面。刚开始我把 Storyboard 当做 xib 来用倒是影响不大,但是到了要连线的时候,书上说的 File's Owner 我就找不到了,而且到了后面做多界面的应用时就一头雾水。其他的操作问题不大,花几天时间适应之后就好了。不过由于从 Windows 转到 Mac OS X 的时间并不久,我还不适应 Mac OS X 的快捷键操作,甚至连快捷键的图标都不一定认得 ⊙﹏⊙ 。

【这不是一篇技术博客】

接下来就进入了基本交互的学习。我按照书上的方法写了一个这样的应用程序:Cocoa Touch 入门记——《精通 iOS 开发》学习心得(1)


1.关闭键盘的方式


首先是两个 Text Field 和两个 Label 。这个并没有多少技术含量,Label 双击即可改文字,而 Text Field 里灰色的文字则是在 Attributes inspector 里的 Placeholder 中更改。同时"Number:"对应的 Text Field 的 Keyboard 改为 Number Pad 。 Bulid 之后点击 Text Field 当然会弹出键盘,而下面我要实现的是点击键盘右下角的 Done 关闭键盘,以及点击 Text Field 以外的位置关闭键盘。

首先在ViewController.h里加入:

- (IBAction) textFieldDoneEditing:(id)sender;
- (IBAction) backgroundTap:(id)sender;

然后在ViewController.m里写这两个方法的实现:

- (IBAction) textFieldDoneEditing:(id)sender {
    [sender resignFirstResponder];
}
- (IBAction) backgroundTap:(id)sender
{
    [_nameField resignFirstResponder];
    [_numberField resignFirstResponder];
}

添加完代码之后还要打开 Connection inspector ,把 Did End On Exit 连到 File's Owner 上。


2.数值调节


接下来是中间那个 Label 和 Slider 。这两个控件是用来实现将 Slider 的 Attributes inspector 中,Maximum 改为100,Minimum 最小改为0,Current 改为50。接下来是创建输入输出口。打开 Assistant editor ,按住 control 将 Slider 连线至 ViewController.h 的 @interface 与 @end 间的空白处,弹出窗口后类型选择 Action ,命名为 sliderChanged 。用同样的方法操作 Label ,但是直接使用默认设置 IBOutlet ,命名为 sliderLabel 。在 ViewController.m 中的相应位置加入如下代码:

-(IBAction)sliderChanged:(id)sender{
    UISlider *slider =(UISlider *)sender;
    int progressAsInt = (int)roundf(slider.value);
    _sliderLabel.text = [NSString stringWithFormat:@"%d", progressAsInt];
}

其实在这里我发现(并体验)了一个 Objective-C 的特性。凡是在 @interface 里 @property 过的对象,可以使用_+对象名或者self.+对象名在各个方法的实现中调用。而@synthesize可以任意更改名字以便调用,但是在这本书里比较少用。如:

@synthesize a=_a;


3.简易的分栏


接下来是下面的 Segmented Control 。同时添加两个 Switch 和一个 Button 。把 Segmented Control 的两栏分别改成"Switches"和“Button”,Button 名改为“Do Something”。在 Segmented Control 上现在需要实现的是:点击“Switches”时显示两个 Switch 并隐藏 Button,点击“Button”时显示 Button 并隐藏两个 Switch。先在 ViewController.h 中创建 Segmented Control 的 Action,命名为“toggleControls”。然后在 ViewController.m 的相应位置加入如下代码:

- (IBAction)toggleControls:(id)sender {
    if([sender selectedSegmentIndex] == 0){
        _leftSwitches.hidden = NO;
        _rightSwitches.hidden = NO;
        _doSomethingButton.hidden = YES;
    }
    else{
        _leftSwitches.hidden = YES;
        _rightSwitches.hidden = YES;
        _doSomethingButton.hidden = NO;
    }
}


4.开关联动


接下来要实现的是两个 Switch 的“联动”,即同时开同时关。分别选中两个 Switch,在 ViewController.h 中创建两个输出口(IBOutlet),分别命名为“leftSwitches”和“rightSwitches”。左边的开关用拖动的方式再添加一个名为“switchChanged:”的方法。在 ViewController.m 中添加如下内容:

- (IBAction)switchChanged:(id)sender {
    UISwitch *whichSwitch = (UISwitch *)sender;
    BOOL setting = whichSwitch.isOn;
    [_leftSwitches setOn:setting animated:YES];
    [_rightSwitches setOn:setting animated:YES];
}


5.操作表和警报


这两个东西其实应该叫“Action Sheet”和“Alert View”会显得不那么陌生。我们就以上面已经创建的名为“Do Something”的 Button 为 Action Sheet 的触发按钮。在 ViewController.h 中创建一个此 Button 的 Action 方法,命名为“buttonPressed”。该方法的实现如下:

- (IBAction)buttonPressed:(id)sender {
    UIActionSheet *myActionSheet=[[UIActionSheet alloc]initWithTitle:@"标题" delegate:self cancelButtonTitle:@"取消键" destructiveButtonTitle:@"毁灭键" otherButtonTitles:@"额外加键", nil];
    [myActionSheet showInView:self.view];
                                                                                                                                                  
}

上面这段代码中的蓝色字可以任意更改成你喜欢的文字。效果如下:

Cocoa Touch 入门记——《精通 iOS 开发》学习心得(1)

接下来我们把“毁灭键”作为 Alert View 的触发按钮。只需要在 ViewController.m 中加入如下代码即可:

-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if (buttonIndex==[actionSheet destructiveButtonIndex]){
        UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"AlertView的标题" message:@"我是一个AlertView" delegate:self cancelButtonTitle:@"取消键" otherButtonTitles:@"随手加", nil];
        [myAlertView show];
    }
}

效果如下:

Cocoa Touch 入门记——《精通 iOS 开发》学习心得(1)

当然你也可以自己做一做别的按钮的触发效果来玩。

【这不是一篇技术博客】