zoukankan      html  css  js  c++  java
  • Swift

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


    样例功能如下:
    1,主界面中是一个列表(这个列表是在代码中实现)
    2,点击列表项时,界面会切换到详情页面,同时传递改列表项的值到详细页面。

    效果图如下:
     

    实现步骤:
    1,在storyboard中拖入一个新的ViewController用做详情页面,同时创建一个继承ViewController的新类DetailViewController。并将其与storyboard中新建的详情页面进行视图与控制器的绑定。

    2,在storyboard中,选中详情页面,通过最上方的Detail View Controller拖拽到主页面进行segue关联(show detail)

    3,选中关联线,设置segue的Identifier属性为“ShowDetailView”

    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 ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
         
        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 as? String
            }
        }
         
        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 DetailViewController: UIViewController {
         
        var itemString:String?
     
        @IBOutlet weak var textField: UITextField!
         
        override func viewDidLoad() {
            super.viewDidLoad()
     
            textField.text = itemString
        }
     
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }   
    }
  • 相关阅读:
    快捷键打开远程桌面
    织梦Dedecms后台登陆密码忘记怎么办?
    Windows curl开启注意事项
    Composer教程
    composer.json和composer.lock有什么区别?
    Web.config 文件例子
    win10回收站右键有2个“CCleaner”怎么删除
    sublime快捷键
    Json 文件注意事项
    加入购物车流程
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4841064.html
Copyright © 2011-2022 走看看