IOS开发之Storyboard应用

article/2025/9/14 16:24:27

(Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图: 


现在,你就可以清楚的看到这个应用究竟是干些什么的,也可以清楚的看到其中的各种关系,这就是Storyboard的强大之处了。如果你要制作一个页面很多很复杂的App,Storyboard可以帮助你解决写很多重复的跳转方法的麻烦,节省很多时间,以便你能够完全的专注于核心功能的实现上。 

开始 
首先启动Xcode,新建一个工程,我们在这里使用Single View App Template,这个模板会提供一个类和一个Storyboard,免去我们自己创建的麻烦。 

创建完成之后,Xcode的界面大概是这样的


这个新的工程由两个类:AppDelegate和ViewController以及一个Storyboard组成(如果你选择了两个设备会有两个Storyboard),注意这个项目没有xib文件,让我们首先看看Storyboard是什么样的,双击Storyboard打开他: 


Storyboard的样子和工作方式都和Interface Builder(以下简称为IB)像极了,你可以从左下方的控件库中拖动控件到你的View之中并且组织他们的排放顺序,唯一不同的地方就是,Storyboard不止是包含一个视图控件,而是所有的视图控件以及他们之间的关系。 


Storyboard对一个视图的官方术语是一个场景,但是一个场景其实就是一个ViewController,在iPhone中一次只能够展示一个场景,而在iPad中一次可以展示多个场景,比如Mail应用程序。 

通过尝试添加一些控件,你可以感受一下Storyboard的工作方式。 


这个是数据显示器,显示所有场景及其控件的结构。


在IB中,这个位置显示的是你的NIB文件中的文件,而在Storyboard中这里显示的是ViewController,目前这里只有一个ViewController,我们接下来可能会增加一些。 

这是一个文档管理器的缩小版,叫做dock。 


Dock展示场景中第一级的控件,每个场景至少有一个ViewController和一个FirstReponder,但是也可以有其他的控件,Dock还用来简单的连接控件,如果你需要向ViewController传递一个关系时,只需要将其按住Ctrl键拖到ViewController上就可以了。 

Note:你大概不会太长使用FirstResponder,因为它只是一个代理控件,代表着当前你所使用的控件。 

现在运行这个应用,他会向我们设计的界面一样。


如果你以前制作过NIB型的应用的话,你也许回去寻找MainWindow.xib ,这个文件包括所有的ViewController,Appdelegate等等,但是在Storyboard中这个特性已经被废止了。 


那么,没有这个文件,应用从那里起始呢? 

让我们打开AppDelegate文件,看看那上面是怎么说的: 

Java代码   收藏代码
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface AppDelegate : UIResponder <UIApplicationDelegate>  
  4.   
  5. @property (strong, nonatomic) UIWindow *window;  
  6.   
  7. @end  

如果要使用Storyboard特性,那么AppDelegate必须继承自UIResponder类, 之前则是继承自NSObject类的,而且必须有一个不是UIOutlet类的Window属性声明才可以。 

如果你再去看AppDelegate的执行文件,里面大概什么都没有,甚至连 application:didFinishLaunchingWithOptions: 也只是返回了一个 YES,而之前,这里则需声明一个ViewController并且将他设置成起始页面,但是现在这些都没有了。 

秘密就在info.plist文件中, 打开Ratings-Info.plist (在 Supporting Files group里) 你就会看到这些: 


在NIB为UI的应用里,info.plist文件中有一个键兼做NSMainNibFile,或者叫做Main nib file base name,他用来指示UIApplication载入MainWindow.xib,并且将他与应用链接起来,而现在这个键值消失了。 

而Storyboard应用则利用 UIMainStoryboardFile,或者 “Main storyboard file base name” 键值来表示当App初始化时的Storyboard名称,当程序运行时,UIApplication会使用MainStoryboard.sotryboard作为第一加载项,并且将他的UIWindow展示在屏幕上,不需要任何编程工作。 

在项目总结面板上,你也可以看到并且编辑这些信息: 


如果你还想设置nib文件的话,另外有地方去设置的。 

为了完成这个实验性的小程序,我们打开main.m,加入 

Java代码   收藏代码
  1. #import <UIKit/UIKit.h>  
  2.   
  3. #import "AppDelegate.h"  
  4.   
  5. int main(int argc, char *argv[])  
  6. {  
  7.     @autoreleasepool {  
  8.         return UIApplicationMain(argc, argv, nil,  
  9.             NSStringFromClass([AppDelegate class]));  
  10.     }  
  11. }  

之前是UIApplicationMain()的函数现在是空的, 变成了 NSStringFromClass([AppDelegate class]). 

与之前使用MainWindow.xib的一个最大的不同是:现在app delegate已经不是Storyboard的一部分了,这是因为app delegate不再从nib文件中,而侍从Storyboard中加载了,我们必须告诉 UIApplicationMain 我们的app delegate类的名字是什么,否则他将无法找到。 





制作一个Tab类型的应用  

本教程中的Rating App拥有两个Tab,在Storyboard中,很轻松就能够做出一个Tab视图。 

回到MainStoryboard.storyboard中,直接从左边的Library拖进来一个TabViewController就可以了。 

新的Tab Bar Controller附带了两个View controller,分别作为Tab的视图使用,UITabBarController被称为包含视图,因为他包含这其他一些View,其他常见的包含视图还有那vi嘎提鸥鸟 Controller和SplitView Controller。 

在iOS 5中,你还可以自己写一个自定义的Controller,这在以前是做不到的。 

包含关系在Storyboard中用一下这种箭头表示。 


拉一个Label控件到第一个子试图中,命名为“First Tab”,再在第二个子视图中添加一个Label,命名为“Second Tab”。 

注意:当屏幕的缩放大于100%时,你无法在单个场景中添加控件。 

选中Tab Bar Controller,进入属性检查器,选中“作为起始场景”,如下图: 


现在那个没有头的虚虚的小箭头指向了Tab Bar Controller,说明他是起始场景。 


这意味着,当你启动这个应用的时候,UIApplication将会将这个场景作为应用的主屏幕。 

Storyboard一定要有一个场景是起始场景才行。 

现在运行试试吧 


code专门为创造这种Tab Bar的应用准备了一个模板,我们也可以使用他,但是自己有能力不用模板自己做一个Tab Bar也是不错的事。 

如果你添加了多于五个子视图到一个TabBarcontroller的话,并不会创造五个Tab,第四个tab会自动变成More标签,不错吧 




制作一个表格视图 

目前连接到Tab bar Controller的视图都是普通的View Controller,现在,我要用一个TableViewController来代替其中的一个ViewController。 

单击第一个视图并删除,从Library中拖出一个TableViewController。 



http://chatgpt.dhexx.cn/article/kwXtO8pm.shtml

相关文章

Storyboard的使用

创建一个Storyboard工程 storyboard是在ios5中引入的新控件&#xff0c;能够更加清晰、简单的整合多个ViewController的关系&#xff0c;下面主要介绍一下怎么初建一个storyboard的工程。有关storyboard的介绍在后面的文章中提到。 首先利用xcode4.2创建一个新项目&#xff0c;…

Storyboard全解析

原文地址&#xff1a;Storyboard全解析 作者&#xff1a;Capacity 故事版&#xff08;Storyboard&#xff09;是一个能够节省你很多设计手机App界面时间的新特性&#xff0c;下面&#xff0c;为了简明的说明Storyboard的效果&#xff0c;我贴上本教程所完成的Storyboard的截图&…

Storyboard 解析

故事版&#xff08;Storyboard&#xff09;是一个能够节省你很多设计手机App界面时间的新特性&#xff0c;下面&#xff0c;为了简明的说明Storyboard的效果&#xff0c;我贴上本教程所完成的Storyboard的截图&#xff1a; 现在&#xff0c;你就可以清楚的看到这个应用究竟是干…

故事板(Storyboard)

1 使用Storyboard完成各项常见功能 1.1 问题 故事板Storyboard是IOS5开始引入的一个新的系统&#xff0c;将多个视图文件&#xff08;类似xib文件&#xff09;集中到一个单独的可视化工作区间&#xff0c;负责创建和管理所有的界面及界面间的跳转&#xff0c;每一个Storyboard中…

什么是故事板?(故事图、Storyboard)(软件显示效果的视觉草图,用于视频创作和广告设计,表达作者的创意)

故事板是软件显示效果的视觉草图&#xff0c;用于视频创作和广告设计&#xff0c;表达作者的创意。20世纪90年代以来&#xff0c;电脑绘制软件渐渐取代了过去的手绘故事板&#xff0c;许多大制作的商业影片&#xff0c;都在拍摄之前用电脑动画模拟的方式创建故事板&#xff0c;…

JSONObject 使用方法详解

JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包&#xff0c;本文给大家介绍jsonobject使用方法相关知识&#xff0c;感兴趣的朋友一起学习吧 1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转…

JSONObject使用方法及详解

最近自己负责的项目涉及到JSON数据的解析,所以在学习之后讲讲自己的认识及见解,希望对大家有帮助. 首先我们来讲讲JSONObject,JSON的数据格式如下: [ { name1 : { name2: { name3: value1 , name4: value2 } } } , { } ] 从外到里看&#xff0c;例子中就是一个数组&…

JSON与JAVA数据的转换。JSONObject.fromObject()和JSONObject.toBean()

六个架包&#xff08;666&#xff09; 首先我们系统中要用到JSON解析&#xff0c;所以要引入这六个架包。饱饱 不引入这六个架包的话&#xff0c;使用JSONObject.fromObject 和 SONObject.toBean会报错&#xff0c;而且有的时候编译器不会告诉你是架包缺少的错误哦&#xff…

使用JSONObject解析

一、JSON数据 1、JSON串访问方式&#xff1a; 2、简介 – JSON(JavaScript Object Notation) 是一种轻量级的数据 交换格式。 – JSON 数据的书写格式&#xff1a; " KEY " : " VALUE " JSON 结构有两种结构&#xff1a; 1、对象&#xff08;表的一列&…

JSONObject使用方法详解

1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包。 2.下载jar包 http://xiazai.jb51.net/201707/yuanma/lib_jb51.rar 提供了除JSONObject的jar之外依赖的其他6个jar包&#xff0c;一共7个jar文件 说明&#xff1a;因为工作…

JSONObject使用方法

1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包。 2.下载jar包 http://files.cnblogs.com/java-pan/lib.rar 提供了除JSONObject的jar之外依赖的其他6个jar包&#xff0c;一共7个jar文件 说明&#xff1a;因为工作中项目…

JSONObject类

&#xff08;1&#xff09;是什么&#xff1f; 阿里巴巴提供的一个json快速转换工具类&#xff0c;实现了Map接口&#xff0c;通过Key Value形式存储数据&#xff0c;初始化大小为16&#xff0c;有参构造方法需要传入一个Map。 项目中实际用途&#xff1a; 用于Json转具体的Ob…

JSON, JSONObject, JsonObject

JSON是一个抽象类 JSONObject是一个继承自JSON的类 JSON,JSONObject 和 JsonObject 1. JAR 包不同&#xff0c;对于可以调用的内置方法函数也不同 JSONObject属于 org.json.JSONObject包&#xff0c; JsonObject 属于 com.google.gson.JsonObject包 2. 存储方式不同 JS…

JSONObject

JSONObject JSONObject 介绍 // JSONObject 是一个类 JSONObject jsonObject = new JSONObject(); // JSONObject 只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。 // JSONObject可以很方便的转换成字符串,也…

js构造函数详解

典型的面向对象编程语言&#xff08;比如C和Java&#xff09;&#xff0c;存在“类”&#xff08;class&#xff09;这个概念。所谓“类”就是对象的模板&#xff0c;对象就是“类”的实例。但是&#xff0c;在JavaScript语言的对象体系&#xff0c;不是基于“类”的&#xff0…

JavaScript构造函数

什么是构造函数 构造函数&#xff08;Constructor&#xff09;的创建方式和普通函数一样。但通常首字母进行大写&#xff0c;用于和普通函数区分。 但是当一个函数创建好以后&#xff0c;我们并不知道它是不是构造函数&#xff08;即使函数名的首字母为大写&#xff09;。只有…

C#构造函数

在C#中&#xff0c;构造函数就是与类具有相同名称的成员函数&#xff0c;通常使用类中的构造函数来初始化类的成员属性。C#中的构造函数有三种&#xff1a; 第一种&#xff1a;实例构造函数。 当使用new关键字创建类的对象时&#xff0c;可以使用实例构造函数来初始化和创建类…

构造函数与拷贝构造函数

拷贝构造函数和构造函数不能分开说&#xff0c;他们都是初始化对象的一种方法。但是我们这里用构造函数辅助说明拷贝构造函数&#xff0c;主要说说拷贝构造函数的声明&#xff0c;用途和使用注意事项。 众所周知&#xff0c;构造函数是一个初始化类对象的函数&#xff0c;即使不…

C# 静态构造函数

目录 写在前面语法格式用法与特性主要作用语法特性 关于泛型的测试测试代码运行结果 写在前面 今天在创建WPF自定义控件时&#xff0c;在模板代码中看到了静态构造函数这种写法&#xff0c;说来惭愧&#xff0c;以前在Java用过这种语法&#xff0c;心知C#也应该会有的&#xf…

构造函数详解

构造函数详解 类的6个默认的成员函数 构造函数的概念&#xff1a; 构造函数是一个特殊的成员函数&#xff0c;名字与类名相同&#xff0c;创建类类型对象时由编译器自动调用&#xff0c;保证每个数据成员都有一个合适的初始值&#xff0c;并且在对象的生命周期内只调用一次。…