IOS入门之创建视图和控件绑定
学习IOS几天了,跟着教程做了两个小应用了,现在先来总结一下。今天就是创建视图和绑带到代码了。其实就是常见的MVC模式实现。
使用的Xcode版本是8.2。
在Xcode创建项目之后,默认就会创建一个Main.stroyborad,程序的入口也就是这里,可以在General的Deployment Info里的Main Interface修改入口storyboard为其他的。
在项目的目录中还能看见自动创建的ViewController类,其实就是一个ViewController对应一个界面。控件库中自带了几个ViewController,新建项目时,Single View Application 就是创建一个空白的ViewController。Tabbed Application就是创建一个Tab Bar Controller。
在MVC模式中
* M -- 数据模型
* V -- View 对应这里的storyboard上的界面
* C -- Controller 对应这里的ViewController类
- 通过storyboard,我们设计界面,然后通过制定界面控件和ViewController类的关系,达到View和Controller绑定。
- 通过storyboard,还可以设计界面间的跳转segue。
- 上图中的ViewController就是整个storyboard的root view controller
创建好摆放控件界面之后,就可以开始摆放控件和将控件遇ViewController绑定了
1 摆放控件
将控件从控件库,拖动到界面上就ok。
2 设置控件样式
选中控件,在右侧的inspector面板里选择button的类型、状态、标题、文字颜色、文字大小等属性
3 将控件与controller绑定
选中控件,在右侧的connection inspector面板中,可以看见button的连接属性
- Triggered Segues 这个action连接到一个界面时,点击button就将调转到连接的界面
- Outlet Collections button将作为一个属性集合的一员
- Sent Events 当button的不同点击事件触发时,连接到上面的方法就被触发
- Refrencing Outlets button作为一个类的属性,一般就是button所在界面的ViewController类的属性
button可以作为类属性的同时,将自己的事件与类的方法绑定;也可制作为属性,或者只绑定事件。
4 开始操作
有2种方式,可以进行绑定
- 1 在controller类里定义属性和方法,再手动绑定
1
button的属性: @property(nonatomic,weak)IBOutlet UIButton* button;
button的事件: - (IBAction)clickButton:(id)sender;
2 在button的connection inspector面板中,将属性或事件绑定到button属性和clickButton方法上
3 绑定之后,就能属性是和View Controller绑定的;touch up side 事件是和View Controller里的clickButton方法绑定的
- 2 自动绑定,好安逸。选中button所在的布局,然后点击Xcode右上角的assistan editor。确保是在ViewController.h文件,如果不是可以在顶部切换到。接着鼠标按着button + Ctrl,往interface区中拖,按图那样操作,就能实现绑定。
经过上述的操作之后,我们就能点击界面中间的button,做些事情了。
最终控制器里的代码,加一句点击button就修改button的文字。
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *button;
- (IBAction)clickButton:(id)sender;
@end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (IBAction)clickButton:(id)sender {
//修改button文字
[self.button setTitle:@"clicked!" forState:UIControlStateNormal];
}
@end
以上就是在storyboard里绑定Button和控制器的方法,其他控件也类似。
小生入门,有何不对之处,还望指出。_
IOS入门之创建视图和控件绑定的更多相关文章
- 学习方法和阶段介绍 、 iOS界面开发引入 、 构造第一个App 、 视图控制器和视图 、 控件与事件 、 InterfaceBuilder
1 创建并运行第一个App 1.1 问题 使用Xcode创建一个App项目,该应用实现功能在界面上显示Hello World标签,在模拟器中的运行结果如图-1所示: 图-1 1.2 方案 分析图-1, ...
- iOS开发UI篇—手写控件,frame,center和bounds属性
iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...
- iOS开发UI基础—手写控件,frame,center和bounds属性
iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...
- iOS开发基础篇-手写控件
一.手写控件的步骤 1)使用相应的控件类创建控件对象: 2)设置该控件的各种属性: 3)添加空间到视图中: 4)如果是 UIButton 等控件,还需考虑控件的单击事件等: 二.添加 UIButton ...
- 创建 WPF 工具箱控件
创建 WPF 工具箱控件 WPF (Windows Presentation Framework) 工具箱控件模板允许您创建 WPF 控件,会自动添加到 工具箱 安装扩展的安装. 本主题演示如何使用模 ...
- 用swift创建各种UI控件【iSwifting社区】
为了方便大家学习,www.iSwifting.com社区为大家准备了创建各种UI控件的代码.開始看着语法可能有些别扭,当用习惯了,就认为还是非常不错的. 社区还添加了问答专区.有问题的朋友.虽然问.大 ...
- UWP入门(四)--设置控件样式
原文:UWP入门(四)--设置控件样式 官方定义:可以使用 XAML 框架通过多种方式自定义应用的外观. 通过样式可以设置控件属性,并重复使用这些设置,以便保持多个控件具有一致的外观. 可分享至不同e ...
- 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
概述 最近,有客户向我们请求开发一个前端下拉控件,需求是显示了一个列表,其中包含可由用户单独选择的项目控件,该控件将在下拉列表中显示多选TreeView(树形图). 如今WijmoJS已经实现了该控件 ...
- 通过WinForm控件创建的WPF控件无法输入的问题
今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子 ...
随机推荐
- java函数式编程之lambda表达式
作为比较老牌的面向对象的编程语言java,在对函数式编程的支持上一直不温不火. 认为面向对象式编程就应该纯粹的面向对象,于是经常看到这样的写法:如果你想写一个方法,那么就必须把它放到一个类里面,然后n ...
- (转)基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍
http://www.cnblogs.com/wuhuacong/p/3344096.html 在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章 ...
- Python代码块缓存、小数据池
引子 前几天遇到了这样一道Python题目:a='123',b='123',下列哪个是正确的? A. a != b B. a is b C. a==123 D. a + b =246 正确答案是B 是 ...
- react实现简单倒计时
今天遇到一个简单的小功能,看网上的一些方法感觉不太适合,所以就手敲了一个,直接上代码!!! import React, { Component } from 'react'; class NoTime ...
- php的优缺点(转)
1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(Fr ...
- [JoyOI] 1035 棋盘覆盖 (二分图匹配)
题目描述 给出一张nn(n<=100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少12的多米诺骨牌进行掩盖. 输入格式 第一行为n,m(表示有m个删除的格子) 第二行到m+1行为x,y,分 ...
- keepalived实现IP地址高可用
yum -y install keepalived vim /etc/keepalived/keepalived.conf global_defs { router_id LVS_DEVEL_ngin ...
- 交互式编程之Golang基本配置(Jupyter-notebooks Golang)
JupyterNoteBook-GO 启动错误 Install Go Install gophernotes 参考资料 如有错误,欢迎指出 错误 error: Cannot assign reques ...
- 手机上怎么去掉a 标签中的img点击时的阴影?
添加: <style type="text/css"> a { -webkit-tap-highlight-color: transparent; -webkit-to ...
- 使用Spring的MailSender发送邮件
第1步:扫描邮件发送的属性配置 <context:property-placeholder location="/config/mail.properties" ignore ...