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 的快捷键操作,甚至连快捷键的图标都不一定认得 ⊙﹏⊙ 。

【这不是一篇技术博客】

接下来就进入了基本交互的学习。我按照书上的方法写了一个这样的应用程序:



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];
}
上面这段代码中的【@" "】可以任意更改成你喜欢的文字。效果如下:

接下来我们把“毁灭键”作为  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];
    }
}
效果如下:



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


6.【这不是一篇技术博客】


嗯,其实我是已经把一本书学过一遍之后再拿起来复(鞭)习(尸)。对于技术博客,我也是个新手,这只是我的第一篇。我写它也只希望能加深印象,更好地掌握这些技巧,至于对别人有没有帮助,嗯,我大部分写的还是转述或者缩写书上的内容,很多我认为不重要的具体操作过程我都省略了。

通过这部分内容的学习,我了解了一些基本控件,掌握了输出口、Action 等操作。虽然这都是最基本的,但是毕竟是从零开始学。以前这些功能都是在 iOS 设备上看到的,而我自己写一遍又有不一样的感觉:“哦,原来是这么写出来的。” 当然学 iOS 开发并不能局限于这一点小成就,后面还有更难的东西。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值