• Swift


    下面通过一个例子说明如何在代码中进行segue页面的切换,以及参数的传递。

     
    样例功能如下:
    1,主界面中是一个列表(这个列表是在代码中实现)
    2,点击列表项时,界面会切换到详情页面,同时传递改列表项的值到详细页面。
     
    效果图如下:
    原文:Swift - 纯代码实现页面segue跳转,以及参数传递 原文:Swift - 纯代码实现页面segue跳转,以及参数传递
     
    实现步骤:
    1,在storyboard中拖入一个新的ViewController用做详情页面,同时创建一个继承ViewController的新类DetailViewController。并将其与storyboard中新建的详情页面进行视图与控制器的绑定。
    原文:Swift - 纯代码实现页面segue跳转,以及参数传递
    2,在storyboard中,选中详情页面,通过最上方的Detail View Controller拖拽到主页面进行segue关联(show detail)
    原文:Swift - 纯代码实现页面segue跳转,以及参数传递
    3,选中关联线,设置segue的Identifier属性为“ShowDetailView”
    原文:Swift - 纯代码实现页面segue跳转,以及参数传递
    4,主界面代码 ViewController.swift
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    import UIKit
     
    class ViewControllerUIViewControllerUITableViewDelegateUITableViewDataSource {
         
        var ctrlnames:[String] = ["任务1","任务2","任务3"]
        var tableView:UITableView?
         
        override func loadView() {
            super.loadView()
        }
         
        override func viewDidLoad() {
            super.viewDidLoad()
            //创建表视图
            self.tableView = UITableView(frame: self.view.frame, style:UITableViewStyle.Plain)
            self.tableView!.delegate = self
            self.tableView!.dataSource = self
            //创建一个重用的单元格
            self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell")
            self.view.addSubview(self.tableView!)
        }
         
        //在本例中,只有一个分区
        func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
            return 1;
        }
         
        //返回表格行数(也就是返回控件数)
        func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return self.ctrlnames.count
        }
         
        //创建各单元显示内容(创建参数indexPath指定的单元)
        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
            -> UITableViewCell
        {
            //为了提供表格显示性能,已创建完成的单元需重复使用
            let identify:String "SwiftCell"
            //同一形式的单元格重复使用,在声明时已注册
            let cell = tableView.dequeueReusableCellWithIdentifier(identify, forIndexPath: indexPath)
                as UITableViewCell
            cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
            cell.textLabel?.text = self.ctrlnames[indexPath.row]
            return cell
        }
         
        // UITableViewDelegate 方法,处理列表项的选中事件
        func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!)
        {
            self.tableView!.deselectRowAtIndexPath(indexPath, animated: true)
            var itemString = self.ctrlnames[indexPath.row]
          
            self.performSegueWithIdentifier("ShowDetailView", sender: itemString)
        }
         
        //在这个方法中给新页面传递参数
        override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
            if segue.identifier == "ShowDetailView"{
                let controller = segue.destinationViewController as DetailViewController
                controller.itemString = sender asString
            }
        }
         
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    }


    5,详情页面代码 DetailViewController.swift

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import UIKit
     
    class DetailViewControllerUIViewController {
         
        var itemString:String?
     
        @IBOutlet weak var textField: UITextField!
         
        override func viewDidLoad() {
            super.viewDidLoad()
     
            textField.text = itemString
        }
     
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }   
    }


    原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/detail_720.html

  • 相关阅读:
    CentOS7.4安装和配置Zabbix4.0
    CentOS7.4安装jdk1.8.0_201、Tomcat-8.5.38环境
    基于腾讯云CentOS7.4+MySQL5.7+Python3+uWSGI+Nginx的Django项目部署
    Windows Server 2008 R2环境下Apache2.4+Tomcat8配置
    Django2.1.5使用xadmin打造适合国人的后台管理系统
    Django2.1.3 smtp 邮件 553报警
    GitHub的Windows客户端的使用教程
    Ubuntu18.04的网络配置(静态IP和动态IP)
    CentOS6.X、7.X下Jenkins的安装及使用
    CentOS7下搭建Nginx+PHP7的安装配置
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4863412.html
Copyright © 2020-2023  润新知