如何使用 didSelectRowAtIndexPath(在 Swift 中)在两个 Storyboard 之间传递日期?

Posted

技术标签:

【中文标题】如何使用 didSelectRowAtIndexPath(在 Swift 中)在两个 Storyboard 之间传递日期?【英文标题】:How to passing Date between two Storyboard with didSelectRowAtIndexPath(in Swift)? 【发布时间】:2015-08-06 09:53:36 【问题描述】:

我需要使用didSelectRowAtIndexPath 才能通过 搜索后我当前的单元格(这是我找到的唯一方法), 但是如何将此单元格名称传递给 SecondViewController?

override func tableView(tableView: UITableView, didSelectRowAtIndexPath  indexPath: NSIndexPath) 

   if(tableView ==   self.searchDisplayController!.searchResultsTableView)
    if let cell: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)
        if let cellTextLabel: UILabel = cell.textLabel                         
           let  cellSelected = cellTextLabel.text!   

   
  

在 SecondViewController 中,我需要使用 TextView 将当前文本呈现给选定的单元格。

【问题讨论】:

【参考方案1】:

试试这个代码:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath  indexPath: NSIndexPath) 

   if(tableView ==   self.searchDisplayController!.searchResultsTableView)
    if let cell: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)
        if let cellTextLabel: UILabel = cell.textLabel                         
           let  cellSelected = cellTextLabel.text!  
           // pass your segue name
           self.performSegueWithIdentifier("segueToDetailVC", sender: cellTextLabel.text!)
   
  

传递数据

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
        if (segue.identifier == "segueToDetailVC")
        
            var str: String = sender as! String
            // your ViewController class object
            var detail: DetailVC = segue.destinationViewController as! DetailVC
            // pass text in String Variable
            detail.text = str
        
    

【讨论】:

我得到 Fehler “无法分配 UITextView 类型的 String zo 类型的值”,你有什么想法吗? Detail.text 中的费勒派 = str【参考方案2】:

在目标视图控制器中添加一个属性secondViewController,并使用prepareForSegue

   override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
      if (segue.identifier == "segueTest") 
           var svc = segue!.destinationViewController as secondViewController;

           svc.toPass = cellTextLabel.text

       
    

在 secondViewController 中你可以定义一个像 String 这样的变量

var toPass:String!

在第二个ViewController的viewDidLoad函数下添加这段代码

println(\(toPass))

【讨论】:

问题是这种方式是不可行的,因为当我使用搜索时我的单元格树发生了变化,这对于使用单元格 textLabel.text 是不可用的。 这是我在 dem 链接中的代码,谢谢

以上是关于如何使用 didSelectRowAtIndexPath(在 Swift 中)在两个 Storyboard 之间传递日期?的主要内容,如果未能解决你的问题,请参考以下文章

具有多个视图控制器的 UITableView

Swift - Alamofire Post,如果为真则更改图像

[精选] Mysql分表与分库如何拆分,如何设计,如何使用

如果加入条件,我该如何解决。如果使用字符串连接,我如何使用

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]