2019-11-06 11:57:18 weixin_41454168 阅读数 19

目前正在学习中,只知道三种界面跳转方式

1、通过 Main.storyboard 用鼠标拖拽控件到需要跳转的页面,选择 Present Modally 实现界面跳转

2、跳转到 Main.storyboard 创建了 View Controller 关联代码 ViewController 的界面

3、跳转到代码 ViewController (没有关联 Main.storyboard 创建的 View Controller)

 

1、通过 Main.storyboard 用鼠标拖拽控件到需要跳转的页面,选择 Present Modally 实现界面跳转

这种方式跳转不太熟悉,并不知道怎么传值,回带数据

 

2、跳转到 Main.storyboard 创建了 View Controller 关联代码 ViewController 的界面

如图所示

第一步:在 Main.storyboard 拖出一个 View Controller 界面,上面的布局可以忽略,按自己需要来就行了

第二步:创建一个 TelController.swift 文件命名按自己需求来

第三步:关联好 View Controller 界面和 TelController.swift 文件。注意:上图中 Storyboard ID 也可以按自己风格自定义,下面跳转需要用到

这时,就可以来实现我们的跳转代码了,我们要做的是从第一个界面跳转到通讯录界面

            let uis = UIStoryboard(name: "Main", bundle:nil)

            let telController = uis.instantiateViewController(withIdentifier: "TelController") as! TelController

            telController.sendValueClsure = { (content : String) -> Void in

                //打印返回的数据

                print(content)

            }

            telController.content = "home-tel"

            telController.modalPresentationStyle = .fullScreen

            self.present(telController, animated: true, completion: nil)

上面代码中,(withIdentifier: "TelController") 中的  TelController 就是上图中的 Storyboard ID

telController.sendValueClsure 和 telController.content 是在 TelController.swift 中自定义的闭包和变量名,闭包用于返回值,变量用来传值过去

TelController.swift 代码如下所示:

import UIKit

//设置一个闭包,用来返回数据

typealias sendValueTel = (_ content : String) -> Void

class TelController: BaseController , UITableViewDataSource, UITableViewDelegate{

        



    //创建一个闭包属性

    var sendValueClsure : sendValueTel?

    //属性传值

    var content : String? = nil



    @IBAction func telReturn(_ sender: UIButton) {

        self.sendValueClsure!("tel返回数据XXX")

        self.dismiss(animated: true, completion:nil)

    }

    override func viewDidLoad() {

        super.viewDidLoad()

        print(content ?? "tel-content-null")

        // Do any additional setup after loading the view.

    }

    

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

        return 10

    }

    

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

        let cell:TelCell = tableView.dequeueReusableCell(withIdentifier: "TelCellId", for:indexPath) as! TelCell

        cell.telName.text = "123"

        return cell

    }

    

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

        alerts(contents: "123")

    }



}

 

3、跳转到代码 ViewController (没有关联 Main.storyboard 创建的 View Controller)

第三种跳转传值和第二种类似,不过不用在 Main.storyboard 创建的 View Controller,直接跳转到 WebController.swift 中

跳转代码于第二种不一样:

            let webController = WebController()

            //将传过来的值  赋给label

            webController.sendValueClsure = { (content : String) -> Void in

                //打印返回的数据

                print(content)

            }

            //传递一个值过去

            webController.content = "home-network"

            webController.modalPresentationStyle = .fullScreen

            self.present(webController, animated: true, completion: nil)

同样的 webController.sendValueClsure 和 webController.content 是在 WebController.swift 中自定义的闭包和变量名,闭包用于返回值,变量用来传值过去,定义方法和 TelController.swift 一样,参考即可

 

自己研究总有很多局限性,很多知识点了解的不够全面,希望各位大佬能够多多指点,如果有其他方式跳转传值或是补充,欢迎在评论区留言讨论

 

 

 

 

 

2015-01-25 16:10:14 tpian928 阅读数 2074

1.storyborad上面画图,然后绑定一个cocoa的界面文件,storyboard id 和 restoration id 填类名

2.然后

var sb = UIStoryboard(name: "Main", bundle:nil)

var vc = sb.instantiateViewControllerWithIdentifier("dengluViewController") as dengluViewController

self.navigationController?.pushViewController(vc, animated: true)


就可以了。





2016-10-28 16:52:10 shifang07 阅读数 2340

Storyboard进行界面跳转及传值

方法一

        // 方法一 跳转(不用连线)

        // 获取指定的Storyboardname填写Storyboard的文件名

        let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)

        // RegisterViewController StoryboardId 填写RegisterViewController

        let registerVC = mainStoryboard.instantiateViewControllerWithIdentifier("RegisterViewController") as! RegisterViewController

        registerVC.phoneString1 = userTextField.text

        self.navigationController?.pushViewController(registerVC, animated: true)


方法二


1.把界面缩小(你可以在空白的地方双击一下,或者右键选择缩放比例),这次我们不是直接使用按扭连接界面,而是进行界面和界面之间的连线

2.选中这条线,在Storyboard SegueIdentifier指定一个标识符“SecondSegue”,后面我们会用到:

3.在事件里添加如下代码,把刚连线的Identifier传进去,sender一般为"self"

self.performSegueWithIdentifier("SecondSegue", sender: self)


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        print("receivef")


        // segue.identifier:获取连线的ID

        if (segue.identifier == "SecondSegue") {

            

            if segue.identifier!.isEqual("SecondSegue") {

                

                // segue.destinationViewController:获取连线时所指的界面(VC

                let receivef = segue.destinationViewController as! RegisterViewController;

                receivef.phoneString1 = userTextField.text!

                receivef.age = 26

receivef.setValue(["三国演义":"罗贯中","水浒传":"施耐庵","红楼梦":"曹雪芹","西游记":"吴承恩"], forKeyPath: "dataDic")

                print("receivef-----%@",receivef)

                

            }

        }

    }


2019-10-15 17:16:00 chun307 阅读数 185

界面1:button

界面2:VC

从界面1跳转到界面2,可以是弹出界面的方式,也可以是上下级的方式。

我们只讲上下级的方式,必须确保上层界面有navigation controllor属性。然后button拉线选择show,如下图:

连接好了是这样:

这时候就实现了上下级跳转。

 

下来介绍如何采用代码+sb实现跳转

1. 给button拉条线到代码区,写方法。

let storyboard = UIStoryboard(name: "Main", bundle: nil)
var newVC: UIViewController!
newVC = (storyboard.instantiateViewController(withIdentifier: "newVCID") )
self.navigationController?.pushViewController(newVC, animated: true)

第一行得到sb

第二行创建一个VC,如果你的sb是tableviewcontroller,替换uiviewcontroller就行。

第三行是将VC和sb进行绑定,sb里面的要跳转界面必须设置ID,如下图:

第四行通过navigation方式进入到下一个界面。

 

当然,你的VC,也可以用代码+sb的方式进行混合设计(大部分都是这样的),记住在custom class里面选择好对应的VC就行。如下图:

 

2016-12-19 23:10:28 kavenGw 阅读数 214

Segue

当你使用storyboard时,可以直接通过Segue来实现跳转界面,而不用写任何一行代码。

Segue跳转方式
* Popover 弹出
* Show
* Custom
* Modal
* Sheet

关闭界面

界面之间传递数据

swift 登录界面跳转

阅读数 2002

没有更多推荐了,返回首页