数组中的Propertylist与segue一起传递

时间:2014-09-28 10:44:59

标签: ios xcode swift

所以我试图创建一个或多或少是静态数据引用并使用plist存储数据的应用

我在故事板上设置了两个TableViewControllers,我想将选定的单元格rownumber或其数据传递给下一个视图?

我的初步设置:

import UIKit

var categoryNames:NSArray = []
var categorySelected:String = ""

class ListForbTVC: UITableViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    let path = NSBundle.mainBundle().pathForResource("listor", ofType: "plist")
    let dict = NSDictionary(contentsOfFile: path!)
    categoryNames = dict.objectForKey("Category") as NSArray
    println(categoryNames.count)

}

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

出于某种原因,我无法弄清楚如何计算数组中的行数?

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return 13
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

cell.textLabel!.text = categoryNames[indexPath.row] as? String

return cell
}

我应该在这里添加什么来实际通过segue传递值?能够很好地知道如何传递所选行的索引以及如何传递它的实际值。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "listData" {

}

如何在下一个视图中接收信息?

我已经在obj-c和X-Code 5中完成了这个,但是我无法弄清楚如何在Swift中做到这一点。

提前致谢

2 个答案:

答案 0 :(得分:0)

我已根据swift更新了我的答案。请检查。

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

    svc.toPass =data}

}

请检查http://jamesleist.com/ios-swift-passing-data-between-viewcontrollers/ 如果面孔问题仍然存在,请告诉我。

答案 1 :(得分:0)

您可以在第二个视图控制器中声明一个属性 - 类似这样 -

class VC2 : UIViewController {

    var someString:String?

    override func viewWillAppear(animated: Bool) {
       super.viewWillAppear(animated)
       if (self.someString != nil) {
         println("Some string =\(self.someString)")
       }
    }
}

然后在prepareForSegue中,只需设置

即可
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if segue.identifier == "listData" {
       let destVC=segue.destinationViewController as VC2
       destVC.someString="Some value"
    } 
}