美文网首页
Swift正向传值

Swift正向传值

作者: 张小博ios | 来源:发表于2017-08-04 15:17 被阅读0次

下面简单的进行正向传值的实例

界面使用storyboard进行搭建

 ListTableViewController: 联系人主列表控制器

创建联系人数组

var personList = [Person]()

override func viewDidLoad() {

super.viewDidLoad()

调用闭包加载的闭包

loadData { (list) in

print(list)

拼接数组 闭包中定义好的代码在需要的时候用Self

self.personList += list

加载完毕数据,刷新数据源

self.tableView.reloadData()

}

}

模拟异步加载 利用闭包回调

private func loadData(completion:@escaping (_ list: [Person]) -> ())->(){

创建线程

DispatchQueue.global().async {

print("正在努力加载....")

休眠一秒钟

Thread.sleep(forTimeInterval: 1)

var arrayM = [Person]()

for i in 0..<20{

let p = Person()

p.name = "zhang - \(i)"

p.phone = "13733225544"

p.title  = "boss"

arrayM.append(p)

}

回到主线程

DispatchQueue.main.async {

执行,回调 

completion(arrayM)

}

}

}

MARK: - 控制器跳转的方法

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

let VC = segue.destination as! DetailTableViewController

//确定选中的indexPath

if let IndexPath = sender as? IndexPath{

进行数据的传递

VC.person = personList[IndexPath.row]

}

}

 MARK: - Table view data source

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return personList.count

}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "CellID", for: indexPath)

cell.textLabel?.text = personList[indexPath.row].name

cell.detailTextLabel?.text = personList[indexPath.row].phone

return cell

}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

tableView.deselectRow(at: indexPath, animated: true)

//执行segue

performSegue(withIdentifier: "list2detail", sender: indexPath)

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

}


联系人详细界面

 DetailTableViewController: UITableViewController {

@IBOutlet var titleTextField: UITextField!

@IBOutlet var nameTextField: UITextField!

@IBOutlet var phoneTextField: UITextField!

定义person 的对象

var person : Person?

override func viewDidLoad() {

super.viewDidLoad()

进行赋值

titleTextField.text = person?.title

nameTextField.text = person?.name

phoneTextField.text = person?.phone

}

//点击item保存按钮的方法

@IBAction func savePreson(_ sender: Any) {

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

}

完成实例图

跳转到明细的界面

相关文章

  • Swift正向传值

    下面简单的进行正向传值的实例 界面使用storyboard进行搭建 创建联系人数组 var personList ...

  • swift 代理传值

    swift中的代理传值跟oc中的用法基本一样,都是用于反向传值,这里假设a界面向b界面传值为正向传值,则: 在b界...

  • 【iOS开发细节】之- delegate代理的使用

    在iOS开发中、好多时候需要涉及到页面传值、而传值又分为正向传值和反向传值 一、 传值 1、正向传值 2、反向传值...

  • reactNative 之组件传值和反向传值

    在项目中我们经常会遇到传值,传值有正向传值和反向传值,比如1.正向传值:从A组件push到B组件传值2.反向传值:...

  • React-Natvie Navigtor正向反向传值

    正向传值 利用属性反向传值

  • Vue页面间传值

    Vue传值的方式有正向传值和反向传值 正向传值:上一页面 --> 下一页面 路由传值 本地储存 eventbus ...

  • 微信小程序页面间传值

    小程序传值的方式有正向传值和反向传值 正向传值:上一页面 --> 下一页面 url 传值 本地储存 全局的 app...

  • OC与swift的数据传输

    简介 该项目主要介绍了oc与swift之间、swift内部几种常见的传值方式(属性传值、代码块传值、代理传值、通知...

  • iOS的五种传值

    前言 iOS常见的五种传值分别为属性传值,通知传值,代理传值,block传值,单例传值 属性传值 用于正向传值,简...

  • Swift常用的界面传值(属性传值、协议传值、闭包传值)

    1、属性传值 属性传值多用于正向传值(A->B) 2、代理传值 代理传值多用于反向传值(B->A) 3、闭包传值 ...

网友评论

      本文标题:Swift正向传值

      本文链接:https://www.haomeiwen.com/subject/wvnvlxtx.html