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 ...
随机推荐
- DotNet程序汉化过程--SnippetCompiler准确定位
开篇前言 上一篇简单介绍了一下怎么汉化.Net程序,但那也仅仅是最基础的工作,要想汉化好一款软件基础我们得做扎实了,但是对于一些需要技巧的也不能不会啊,这一篇就介绍一下怎么准确定位字符串. 主要使用工 ...
- windows同一台电脑设置多个公钥与不同github帐号交互
1 生成公钥 1. 安装git,从C:\Documents and Settings\Administrator\.ssh\目录打开 "Git Bash":2. 键入命令:ssh- ...
- unity绘制线和绘制面
绘制线条代码,其实就是指定至少两个点,然后赋予贴图即可,不废话,上代码: using UnityEngine; using System.Collections; public class LineT ...
- cookie自封装对象
cookie.js(设置名值对属性时候不支持设置成前后有空格的格式,如' key'或'key ',只支持‘key’) (function initCookieClass(win){// 定义匿名函数并 ...
- c#打开指定设备程序以及网址
//打开计算器 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = @"C:\WINDOWS\ ...
- Linux下使用多线程模拟异步网络通信
服务器 /* socket server * 2014-12-15 CopyRight (c) arbboter */ #include <unistd.h> #include <s ...
- 奇怪的JS正则表达式问题
同一个正则表达式,为什么在JS里,用 var reg = new RegExp("..."); 定义,验证就各种失败,用 var reg=/.../; 定义,验证就对了...
- Truck History--poj1789
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21534 Accepted: 8379 De ...
- 异步编程设计模式Demo - PrimeNumberCalculator
using System; using System.Collections; using System.Collections.Specialized; using System.Component ...
- iOS 面试题集合
ASIDownloadCache 设置下载缓存 它对Get请求的响应数据进行缓存(被缓存的数据必需是成功的200请求): [ASIHTTPRequest setDefaultCache:[ASID ...