学习IOS几天了,跟着教程做了两个小应用了,现在先来总结一下。今天就是创建视图和绑带到代码了。其实就是常见的MVC模式实现。

使用的Xcode版本是8.2。

在Xcode创建项目之后,默认就会创建一个Main.stroyborad,程序的入口也就是这里,可以在GeneralDeployment 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入门之创建视图和控件绑定的更多相关文章

  1. 学习方法和阶段介绍 、 iOS界面开发引入 、 构造第一个App 、 视图控制器和视图 、 控件与事件 、 InterfaceBuilder

    1 创建并运行第一个App 1.1 问题 使用Xcode创建一个App项目,该应用实现功能在界面上显示Hello World标签,在模拟器中的运行结果如图-1所示: 图-1 1.2 方案 分析图-1, ...

  2. iOS开发UI篇—手写控件,frame,center和bounds属性

    iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  3. iOS开发UI基础—手写控件,frame,center和bounds属性

    iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  4. iOS开发基础篇-手写控件

    一.手写控件的步骤 1)使用相应的控件类创建控件对象: 2)设置该控件的各种属性: 3)添加空间到视图中: 4)如果是 UIButton 等控件,还需考虑控件的单击事件等: 二.添加 UIButton ...

  5. 创建 WPF 工具箱控件

    创建 WPF 工具箱控件 WPF (Windows Presentation Framework) 工具箱控件模板允许您创建 WPF 控件,会自动添加到 工具箱 安装扩展的安装. 本主题演示如何使用模 ...

  6. 用swift创建各种UI控件【iSwifting社区】

    为了方便大家学习,www.iSwifting.com社区为大家准备了创建各种UI控件的代码.開始看着语法可能有些别扭,当用习惯了,就认为还是非常不错的. 社区还添加了问答专区.有问题的朋友.虽然问.大 ...

  7. UWP入门(四)--设置控件样式

    原文:UWP入门(四)--设置控件样式 官方定义:可以使用 XAML 框架通过多种方式自定义应用的外观. 通过样式可以设置控件属性,并重复使用这些设置,以便保持多个控件具有一致的外观. 可分享至不同e ...

  8. 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)

    概述 最近,有客户向我们请求开发一个前端下拉控件,需求是显示了一个列表,其中包含可由用户单独选择的项目控件,该控件将在下拉列表中显示多选TreeView(树形图). 如今WijmoJS已经实现了该控件 ...

  9. 通过WinForm控件创建的WPF控件无法输入的问题

    今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子 ...

随机推荐

  1. 根据业务自己设计的.NET工厂模式架构

    最近项目的架构需要做调整优化,根据业务需要写了一个简单的工厂模式架构 项目介绍:整个系统分为三大平台(这里用A,B,C来标示),每个平台又细分为多个APP客户端(每个APP都有appid来区分) 因为 ...

  2. (转)基于MVC4+EasyUI的Web开发框架形成之旅--权限控制

    http://www.cnblogs.com/wuhuacong/p/3361351.html 我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大 ...

  3. JS 封装一个求数组最大值的函数

    var aa = [1,2,3,4,9,2,5]; z(aa); function z(attr){ var b = 0 for(var i =1;i<aa.length;i++){ if(aa ...

  4. 【udacity】机器学习

    Evernote Export 2.人工智能简介 机器学习源自于人工智能,在此方向上,该领域有分为不同学派,机器学习主要关注的是制造能够自主动作的机器 3.人工智能难题 1.所有智能体都只有很少的计算 ...

  5. LCA-倍增法(写给自己看)

    LCA-倍增法 题目又做不下去来写题解了 算法思想 类似于ST表的思想维护dp[i][j]:节点i向上跳2^j高度的的节点 转移方程 \(dp[i][j]=dp[dp[i][j-1]][j-1]\)注 ...

  6. [USACO4.2] 草地排水 Drainage Ditches (最大流)

    题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...

  7. 第n个质数

    //注:for循环之后第三个式子总会操作一遍. #include <iostream> using namespace std; int main() { int n; while (ci ...

  8. 马上着手开发ios应用程序

    https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOSCh/chapters/Introd ...

  9. JSP中文乱码问题的由来以及解决方法

    首先明确一点,在计算机中,只有二进制的数据! 一.java_web乱码问题的由来 1.字符集 1.1 ASCII字符集 在早期的计算机系统中,使用的字符非常少,这些字符包括26个英文字母.数字符号和一 ...

  10. LoadRunner结果分析 – TPS

    针对吞吐率和 TPS 的关系,这个在结果分析中如何使用,就个人经验和朋友讨论后,提出如下建议指导,欢迎同僚指正. 相关定义 响应时间 = 网络响应时间 + 应用程序响应时间 响应时间 =(N1+N2+ ...