我不认为标题使用了正确的术语,所以我现在试着澄清。
我有两个视图控制器,我想在它们之间传递数据。视图1有一个tableView,第二个视图有一个MKMapView。现在在我想要的相应控制器中,当您单击视图1中的单元格时,它会将您发送到单元格指示的地图上的位置。纽约的一个小组将发送到纽约的地图。所以我尝试在didSelectRowAtIndexPath
中创建了第二个控制器的实例,它将数据传输给它。但是当我这样做时,它总是会在第二个视图控制器中返回一个nil值。
所以我创建了第3个swift文件,它有一些全局变量,当我通过它们传输数据时,它运行得很好。为什么会这样?
干杯。
编辑:在我通过第三个文件之前
ViewController 1的代码
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var selectedCell = array[indexPath.row]
var viewController2 = ViewController2()
viewController2.textLabel1 = selectedCell.name
coord.textLabel2 = selectedCell.coordinate
}
ViewController 2的代码
@IBOutlet weak var textLabel1: UILabel!
@IBOutlet weak var textLabel2: UILabel!
View Controller 2的代码通过第三个文件
@IBOutlet weak var textLabel1: UILabel!
@IBOutlet weak var textLabel2: UILabel!
override func viewDidLoad() {
textLabel1.text = globalVar1
textLabel2.text = globalVar2
}
第3档的代码
var globalVar1: String!
var globalVar2: String!
所以从下面的评论中我认为textbabels尚未初始化的第一种方式,所以我分配给它们的值变为nil值。它是否正确?如果是这样,你会如何正确地做第一种方式
答案 0 :(得分:1)
如果我不得不猜测,我会因为我无法评论更多信息(我遇到麻烦)。
这是因为您正在尝试将其分配到插座。 插座尚未设置,这意味着设置时(我认为ViewDidLoad) 插座将设为零。 但是,如果对象没有离开堆,则应保留属性。
答案 1 :(得分:-1)
PSedu代码:
第一个观点: 你的表格视图
第二视图: 您的地图视图
如何工作
在你的第二个观点中: 在.h文件中添加NSMutableArray * valueArraytoGet,设置其属性 @。在.m文件中同步它
现在在didSelectRowAtIndex方法的第一个视图中
创建Second View Controller的对象 并将数据分配为 SecondViewController * object = ...... object.valueArraytoGet = [在这里指定你的数值数组] ....
希望它会有所帮助