根据tableviewcell将值传递给另一个viewcontroller

时间:2016-07-25 12:16:39

标签: ios iphone swift

我在每个tableViewCell上添加了UIButton,这样当我点击它时,它可以根据tableViewCell上的文本将用户发送到另一个viewController。我已经使用了带有sharingManager的singleTon来在viewControllers之间传递值,并且我为每个tableViewcell在函数“setSelected”中设置了标题。

override func setSelected(selected: Bool, animated: Bool) {
 SharingManager.sharedInstance.selectedCollege = self.CollegeLabel.text!

}

然后我获取“selectedCollege”的值并在另一个UIviewcontroller上设置标题。

override func viewDidAppear(animated: Bool) {

 self.title = SharingManager.sharedInstance.selectedCollege
}

但是,它没有正确设置标题,因为标题并不总是与tableViewCell上的文本匹配。

3 个答案:

答案 0 :(得分:0)

为什么使用SharingManager?如果要在ViewControllers之间传递数据,可以使用prepareForSegue方法。

  1. 添加一个实例变量" titleOfSelectedRow"到您的视图控制器
  2. 从源视图控制器创建segue到目标视图控制器并设置标识符
  3. 在您的按钮操作中调用performSegueWithIdentifier方法并在titleOfSelectedRow方法中保存所选行的标题
  4. 覆盖prepareForSegue方法。在此方法中,您可以访问destinationViewController并将标题设置为titleOfSelectedRow变量的值。

答案 1 :(得分:0)

使用prepareForSegue方法。 1)在故事板中设置segue 2)做这样的事情:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let cntrl = segue.destinationViewController as? SecondViewController {
        cntrl.publicVar = 'your value'
    }
}

你也可以获得indexOf选中的tableView行。例如:

let selectedIndex : NSIndexPath = self.tableView.indexPathForSelectedRow

另一种方式 - 初始化viewController,其中包含storyboard ID和call pressent函数

答案 2 :(得分:0)

你可以做这样的事情来满足你的需要

在视图控制器中创建要设置标题

的变量
class SecondVC: UIViewController {

//MARK: - Variables

var title : String = ""
.......

现在点击按钮

override func setSelected(selected: Bool, animated: Bool) {
    let title = self.CollegeLabel.text!
    let secondVC = self.storyboard?.instantiateViewControllerWithIdentifier("SecondVC") as! GSMenuCategoryPriceVC

    secondVC.title = title
    self.navigationController?.pushViewController(secondVC, animated: true)
}