更新TableViewController中的变量

时间:2014-10-23 17:03:06

标签: ios uitableview swift parameter-passing

我需要更新TableViewController中的变量,我找不到办法,有人可以解释一下为什么这不起作用吗? 我生气了。

enter image description here

从我的视图控制器中,这是我正在运行的代码:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let TV = storyboard.instantiateViewControllerWithIdentifier("tbController") as myTableViewController
TV.x = "test"

然后,从TableViewController类:

class myTableViewController: UITableViewController {
 var x:String!
 override func viewDidLoad() {
     super.viewDidLoad()
     println("Value of x is: \(self.x)")
 }
}

打印值为:nil

为什么呢?这有什么问题?我不明白: - (

更新图片 enter image description here

2 个答案:

答案 0 :(得分:1)

首先,给ViewController和TableViewController之间的segue一个标识符(例如:“TableViewSegue”

然后在ViewController中,使用prepareForSegue将数据从ViewController传递到TableViewController

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
    if segue.identifier == "TableViewSegue" {
        let vc = segue.destinationViewController as myTableViewController
        vc.x = "Test"
    }
}

答案 1 :(得分:0)

这里可能有几个问题。

1。您应该将tableview嵌入到初始viewcontroller中并将其创建为IBOutlet

编辑:从更新后的图片中,您可以点击右上角的按钮,然后转到桌面视图。因此,这是一个不正确的陈述。

  1. 您还需要创建Viewcontroller(如果您选择遵循上面的#1,则为tableviewcontroller或主视图控制器)UITableViewDelegate和UITableViewDataSource
  2. 如果您希望更改所显示图像上列出的标签,则需要使用label.text =“String”分配来更改显示的内容
  3. 您尚未在tableviewcontroller中为x设置初始变量。
  4. 此外,作为一点,您的操作顺序未正确设置,因此它将始终显示为零。因为如果你看看你是如何构建的:

    1. tableview上的viewdidload中有println。您正在打印的此变量尚未设置,因此它是nil
    2. 然后,您创建了此类的实例。一旦创建了该实例,就会触发viewdidload方法,并打印出一个零行。
    3. 然后你通过TV.x方法更改了变量。但是那里没有println检查,所以你无法看到你做了什么。