昨天在做一个TableViewCell点击的跳转、传值时遇到了问题,今天总结一下

同StoryBoard文件,通过Segue跳转

StoryBoard中

首先在StoryBoard中选中Cell,向第二个页面连线,创建Segue
图片描述
点击连线。为Segue设置identifier
图片描述

代码跳转、传值

首先在摇跳转到的页面设置一个变量用来接受传值
var id:String?
在第一个页面的ViewController中重写prepareForSegue方法

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
            //判断segue.identifier
            if segue.identifier == "AboutUsSegue"{
            //实例化第二个页面
                let page2:NextViewController = segue.destinationViewController as! NextViewController
                //传值
                page2.id = dataArray[tableView.indexPathForSelectedRow!.row].id
                page2.titleOfNavi.title = dataArray[tableView.indexPathForSelectedRow!.row].title
            }
        }

这里用到了tableView.indexPathForSelectedRow这个属性,这个属性的值即为选中的cell的indexPath

不同界面纯代码跳转

这次的App使用了iOS9提供的新特性,故事版引用,将界面分成了很多个StoryBoard文件。
做了好久才发现给的数据都是一个形式的,可以跳转到同一个页面?
只好在代码里实现了
这次我们通过didSelectRowAtIndexPath方法来实现

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
            //拿到storyBoard
            let storyBoard = UIStoryboard(name: "AboutUs", bundle: nil)
            //拿到ViewController
            let nextPage = storyBoard.instantiateViewControllerWithIdentifier("NextViewController") as! NextViewController
            //传值
            nextPage.id = joinUsDataArray[indexPath.row].id
            nextPage.titleOfNavi.title = joinUsDataArray[indexPath.row].title
            //跳转
            self.navigationController?.pushViewController(nextPage, animated: true)
        }

Hydrogen
2.5k 声望73 粉丝

Write code for fun.