温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-19 22:12:44 来源:网络 阅读:783 作者:hzhowie 栏目:移动开发

首先是熟悉 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)

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

【这不是一篇技术博客】

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI