swift中的传值
光阴似箭,日月如梭,转眼间学习的旅途已经过了一大半了,忘着自己所敲过的成批的代码,看着自己付出和努力,默默地为自己这几个月的奋斗感到欣慰,不论学习的路途再怎么的艰辛,但是自己还是坚持过来了,回想着以往的自己,似乎还从没有这么的坚持过,也没有这么的认真对待过,所以这么艰难的路自己都走过来了,后面的我相信一定是绚丽的明天和辉煌的未来,也许有些人说当个程序员真的好苦,但是我并不这么认为,因为这是我想做的,也是我所向往的,更是我所选择的道路,做“你”所想,实现我们共同的目标!!!!
在这看似漫长而又短暂的一天里,我终于认识到了时间的宝贵,也认识了惜时的重要性,希望大家和我一样都要珍惜时间,把握身边的分分秒秒。今天我们主要学习了Swift中的传值问题,先是由前向后传值,再者是右后往前传值,当然方法也不止一种的啦,下面我就为大家简单地介绍下在传值中我们经常遇到的其中一种方法吧,望大家有所收获的同时多提意见哈:
一、Storyboard搭建UI界面步骤详解
其中关于创建工程的步骤在这里就不多提了,因为在前面已经说过了,当然了不懂的可以再问哦,下面简单说下传值的基本流程:
1.可是话步骤:

箭头所指方向就是故事本也就是storyboard,接下来就要拖控件,进行UI界面的搭建了

先将原本带有的Controller给删除了,然后再重现拖上去一个NavigationController,当然了,这个控件是可以进行搜索的,下面为大家指出搜索的具体位置
当然在刚拖进去的时候尺寸会大的有点受不了,不过我们还是有针对方案的,下面为大家指出

首先我们需要先选中我们拖上去的控件然后选中红色圈圈圈出的选项,接下来我们就可以看到矩形框圈出的区域了,我们点击它后,会弹出箭头所指的提示框,我们选择箭头所指的选项就可以实现我们的需求了。
接下来的步骤类似于上面所说的就是单纯的拖控件了,至于大小就不用管了,因为我们在刚开始的时候已经调好了,控件拖好后的效果是这样的,如下图:

至于那个箭头可能还是有些人不知道的把,这个我们需要在另外一个选项中调,让第一个视图作为我们的根视图控制器,如图所示:

这样简单地UI界面就基本完成了
二、代码实现具体的传值过程
首先我们需要建几个类让我们所托控件根据实现需求分别继承,其次然后我们需要自己键model层,来进行数据管理,下面为大家附上传值的具体代码,可能不够详细,有不足还请指出。
class AddressBookTableViewController: UITableViewController {
var arry = [AddressBook]()
func getData(ntf: NSNotification) {
self.arry.append(ntf.object as AddressBook)
}
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("getData:"), name: "aaa", object: nil)
var model : AddressBook = AddressBook()
var dic = Dictionary<String, String>() dic["name"] = nameTextFiled.text
dic["sex"] = SexTextField.text
dic["phoneNumber"] = PhoneTextField.text model.setValuesForKeysWithDictionary(dic) NSNotificationCenter.defaultCenter().postNotificationName("aaa", object: model, userInfo: dic)
// self.delegate!.addInfo(model) var alt = UIAlertView(title: "添加成功", message: "已经将name:\(nameTextFiled.text) sex:\(SexTextField.text), phoneNumber:\(PhoneTextField.text)插入", delegate: self, cancelButtonTitle: "OK")
alt.show()
这是一种从后往前的传值方法,也就是类似于通讯录添加联系人的方法。
下面再为大家介绍从前往后传至的方法,也就是通讯录中点击联系人跳转至详情页的实现。
var arry = [AddressBook]()
var model1 : AddressBook = AddressBook() var dic = Dictionary<String, String>()
dic["name"] = "乔明"
dic["sex"] = "不明"
dic["phoneNumber"] = "" model1.setValuesForKeysWithDictionary(dic)
self.arry.append(model1)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
if sender is UITableViewCell {
var cell = sender as UITableViewCell
var indexPath = tableView.indexPathForCell(cell)
var model = self.arry[indexPath!.row]
var vc = segue.destinationViewController as ViewController
vc.delegate = self
vc.info = model
} else {
var vc = segue.destinationViewController as ViewController
vc.delegate = self
}
}
func addInfo(info: AddressBook) {
self.arry.append(info)
}
当然了,这个前提是要遵循代理,然后实现代理中的方法,具体的创建代理和代理方法我在下面为大家补充上。

这就是两种简单地传值方法,希望可以帮助大家更快的学习Swift语言,如果有什么不懂的尽管想我提出,有问必答哦,哈哈。
好了今天就写到这里了,要开始复习今天的知识点了,good good study, day day up! 哈哈,好好学习哦博友们,我们一起进步啦,加油加油!
swift中的传值的更多相关文章
- Swift: 比较Swift中闭包传值、OC中的Block传值
一.介绍 开发者对匿名函数应该很清楚,其实它就是一个没有名字的函数或者方法,给人直观的感觉就是只能看到参数和返回值.在iOS开发中中,它又有自己的称呼,在OC中叫Block代码块,在Swift中叫闭包 ...
- IOS学习[Swift中跳转与传值]
Swift中页面跳转与传值: 1.简单方式 首先,Swift的跳转可分为利用xib文件跳转与storyboard跳转两种方法,我这里选择使用storyboard的界面跳转方法. 1.通过在storyb ...
- Swift中的一些关键字
以下关键字关于引用传参.属性.修改成员变量.静态变量.索引和构造函数重载 读过The Swift Programming Language的人都能看得出,我上面的这几个说法全不是apple的习惯用语. ...
- Swift 08.页面传值
OC中经常用到的一种初始化控制器的方法.比如A push B.并且将A的一个值:value 传递给B 使用.简单的办法就是 在B重构init方法.比如在.h 中定义: - ()initValue:(N ...
- Swift 中的getting和setter的使用
以下简单的介绍Swift中的getting和setting的使用方法: Xcode version: 6.1 先附代码: class Test { var num1: Double = 0.0 ini ...
- Swift 闭包反向传值
Swift中闭包反向传值 1.第二控制器申明一个闭包类型 typealias BackBlock = (String) -> Void 2.第二控制器定义一个变量 var BackBlockCl ...
- Swift中Singleton的实现
一.意图 保证一个类公有一个实例,并提供一个访问它的全局访问点. 二.使用场景 1.使用场景 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 当这个唯一实例应该是通过子类化可扩展的,并且 ...
- Swift新手教程系列5-函数+selector在swift中的使用方法
原创blog.转载请注明出处 近期在用swift写代码,尽管遇到一些问题,可是代码量确实减了不少. swfit新手教程系列会随着我使用swfit中的积累,不断地去修正更新 之前的教程 swift单例模 ...
- swift学习笔记 - swift中常用关键字
swift中常用关键字 **用作声明的关键字: ** class.deinit.enum.extension.func.import.init.let.protocol.static.struct.s ...
随机推荐
- .NET基础拾遗(3)字符串、集合和流1
一.字符串处理 1.1 StringBuilder类型 众所周知,在.NET中String是引用类型,具有不可变性,当一个String对象被修改.插入.连接.截断时,新的String对象就将被分配,这 ...
- DEV GridControl 获取选中行的数据
private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowCha ...
- Android测试框架1(非原创)
1.继承AndroidTestCase :public class JunitTest3 extends AndroidTestCase {} 2.在AndroidManifest.xml清单文件中添 ...
- oracle学习笔记(一)用户管理
--oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...
- C#重写Equals方法步骤
检查传入的参数是否为null, 如果为null,那么返回false, 否则执行步骤2 调用ReferenceEquals查看是否为统一个对象,如果是,那么返回true, 否则执行步骤3 判断两者是否为 ...
- K-D Tree题目泛做(CXJ第二轮)
题目1: BZOJ 2716 题目大意:给出N个二维平面上的点,M个操作,分为插入一个新点和询问到一个点最近点的Manhatan距离是多少. 算法讨论: K-D Tree 裸题,有插入操作. #inc ...
- Light oj 1030 概率DP
D - Discovering Gold Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:32768 ...
- Tornado 模板支持“控制语句”和“表达语句”的表现形式
Tornado 的模板支持“控制语句”和“表达语句”,控制语句是使用 {% 和 %} 包起来的 例如 {% if len(items) > 2 %}.表达语句是使用 {{ 和 }} 包起来的,例 ...
- Constructing Roads--hdu1102
Constructing Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- JAVA语言对比C++语言的几个优点和自身的关键特性
之所以写这篇博客不是为了比较JAVA语言和C++语言到底孰优孰劣,而是从语言本身出发进行对比总结程序编码设计上的差别.因水平有限,某些内容可能太过片面,欢迎指正和讨论. JAVA语言在设计上很好地借鉴 ...