从零开始学iPhone开发(2)——控件的使用

这一节我们开始学习iOS中简单控件的使用。

在iOS编程中,简单的控件有很多,其中主要的用的多的有:

UILabel,UIButton,UISegmentedControl, UITextField, UISlider, UISwitch

等。现在我们来学习使用这些控件。

1.首先我们学习在xib上来使用,

如下图,在工程中新建一个TestComponentViewController,并且选中With xib复选框,如下图

然后点击TestComponentViewController.xib文件,拖动右下角的控件到界面上(类似VS),如下图常用控件都可以直接拖进去。

 

现在我们需要对这些控件进行操作,该如何做呢?这里演示UILabel和UIButton的操作,其它操作类似。

如下图,我们首先在TestComponentViewController.h文件中定义需要操作的控件成员变量(以IBOutlet修饰),并且定义点击UIButton后触发的消息函数(以IBAction来修饰),代码如下:

#import <UIKit/UIKit.h>
 
@interface TestComponentViewController : UIViewController{
    IBOutlet UILabel *_label;
    IBOutlet UIButton *_button;
}
 
-(IBAction)buttonClicked:(id)sender;
 
@end

 现在我们需要把代码和xib中的拖到界面上的控件连接对应起来,这样代码操作的就是xib上面的控件。如下图:

对UILabel和成员变量_label进行连接的做法,类似UIButton和成员变量_button可进行同样的连接,消息函数和_button也可以进行同样的连接。

然后我们在TestComponentViewController.m中实现-(IBAction)buttonClicked:(id)sender;消息,实现代码如下:

 

-(IBAction)buttonClicked:(id)sender
{
    _label.text = @"New Clicked Message Text";
    [_button setTitle:@"Clicked" forState:UIControlStateNormal];
}

现在我们可以运行程序了,运行效果如下:

                         (1) 点击Button前                                                 (2) 点击Button后 

现在我们学会了简单的UILabel和UIButton的使用。其它的空间使用类似,但是有些函数触发不太一样。UIButton默认触发函数事件是TouchupInside,而UISegmentedControl默认是ValudeChanged。

2.我们使用纯代码来进行编辑我们新建TestMenuComponentViewController类,不添加xib文件。我们在viewDidLoad函数中来实现这些控件的新建和初始化代码如下:
复制代码
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    _button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    _button.frame = CGRectMake(35.0, 57.0, 100.0, 44.0);
    [_button setTitle:@"Button" forState:UIControlStateNormal];

    
    _label = [[UILabel alloc] initWithFrame:CGRectMake(35.0, 20.0, 245.0, 21.0)];
    _label.text = @"Label";
    
    [_button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:_label];
    [self.view addSubview:_button];
}
复制代码

 

运行效果如下:

<em id="__mceDel"><img src="//images0.cnblogs.com/blog/41517/201307/31124316-7c69594ba0ae4fe280f90ec5ad9a9978.png" alt=""><img src="//images0.cnblogs.com/blog/41517/201307/31124323-c971cee8a83c4fd7af445abd5a57a0a5.png" alt=""><br><br>项目源代码链接:<br><br></em>

http://115.com/lb/5lbfksd5#
TeachingProject.zip


115网盘礼包码:5lbfksd5

 

 

posted @   冰岛  阅读(340)  评论(0编辑  收藏  举报
编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 用 C# 插值字符串处理器写一个 sscanf
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
历史上的今天:
2010-07-31 (转)symbian 接入点选择 & ini文件读写
2009-07-31 从头学习Drupal--基本概念和架构
点击右上角即可分享
微信分享提示