2017-04-25 70 views
-1

我需要将此字符串值传递给另一个viewController。出于某种原因,我得到一个sigabrt错误。任何人都可以指出我做错了什么?传递字符串Segue Swift

需要通过userIdentityString值userCellTapped视图 - 控制

class GeneralChatroom: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate, UITextViewDelegate { 


//Get Data of current cell that has been tapped 
     func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ 

      //Eliminate highlight after cell is tapped 
      tableView.deselectRow(at: indexPath as IndexPath, animated: true) 

      let userIdentityString : String = generalRoomDataArr[indexPath.row].cellUserId 

      let destinationUID = userCellTapped() 

      destinationUID.programVar = userIdentityString 

      destinationUID.performSegue(withIdentifier: "profileTapped", sender: self) 


     } 

} 


    import UIKit 

    class userCellTapped: UIViewController { 

     var programVar : String! 


     override func viewDidLoad() { 
      super.viewDidLoad() 


      print("testbles", programVar) 


     } 


    } 
+0

[查看控制器之间传递数据]的可能的复制(http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – pableiros

回答

4

正确设置目的地视图控制器的变量是在ViewController类实现prepare(for segue ...)方式:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "profileTapped" { 
     if let destination = segue.destination as? MyDestinationViewControllerType { 
      destination.myVariable = myClassLevelVariable 
     } 
    } 
} 
0

为了调用方法

destinationUID.performSegue(withIdentifier: "profileTapped", sender: userIdentityString) 

您必须将Segue与标识符"profileTapped"添加到故事板中。 该方法中的发件人是您想要传递的值。由于标识符你应该通过Segue的id。

如果你想传递一些数据到该控制器。同比增长需要实现额外的方法

func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "profileTapped", let vc = segue.destination as? UserCellTapped, let variable = sender as? String { 
     vc.programVar = variable 
    } 
} 
+0

谢谢;)你非常喜欢。 – codechicksrule