【发布时间】:2016-03-27 21:39:25
【问题描述】:
我正在运行 Xcode 7.3 并使用 Swift 2.2。我无法将数据从我的第一个视图控制器传递到第二个视图控制器。我在我的第一个视图控制器中创建了一个变量string,它保存了表格视图中的选定行并且它可以工作。我还在我的第二个视图控制器中创建了另一个变量string,它应该保存所选行的名称,然后将文本传递给标签。
import UIKit
import Parse
import ParseUI
class FruitListPage: UIViewController, UITableViewDelegate, UITableViewDataSource {
var selectedFruit = String()
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let fruitName:Scanner2 = self.storyboard?.instantiateViewControllerWithIdentifier("scanPage") as! Scanner2
fruitName.loadView()
let nameShop = textArray[indexPath.row]
print(nameShop)
selectedFruit = nameShop
print(selectedFruit)
fruitName.selectedFruit2 = selectedFruit
}
在第一个视图控制器中,一切都运行良好,每次在表格视图中按一行时,我都可以看到水果名称。真正的问题是第二个视图控制器中的selectedFruit2 字符串永远不会从第一个视图控制器中获取数据。有什么线索吗?
import UIKit
import Parse
class Scanner2: UIViewController {
@IBOutlet var fruitNameLabel: UILabel!
var selectedFruit2 = String()
override func viewDidLoad() {
super.viewDidLoad()
print(selectedFruit2)
}
}
【问题讨论】:
-
loadView文档:“你永远不应该直接调用这个方法”。另请注意,您在加载视图之后设置selectedFruit2。删除loadView可能会解决您的问题,尽管viewWillAppear(_:)可能比viewDidLoad更安全
标签: ios storyboard swift2