2017-01-10 52 views
0

所以我有一个dataModel,使用我的数据源类从plist中抽取数组。在我的视图控制器我打电话与如何将数据源传递给第二个View Controller? Swift

let dataSource = DataSource() 

数据源类,然后我抓住值从阵列

abilities = dataSource.ability[monster.ability! + 2] 

我的问题是,当我抓住从第二ViewcontrollerDatasource,有一个2在暂态过渡期间延迟-4秒。我如何通过第二个viewcontroller传递数据源,所以我可以读取值,而不必从第二个视图控制器中调用let dataSource = DataSource()

回答

1

有几种不同的方法来处理从一个视图控制器到另一个视图控制器的传递信息。

但是对于您的场景,我会建议在您的第二个视图控制器中创建一个数组属性,该数组属性将保存您的数据源,但只能通过调用prepare(for segue: UIStoryboardSegue, sender: Any?)方法从第一个视图控制器传递它。

下面是我如何传递简单的数据到另一个视图控制器为例,几乎是一个主详细设置:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let destinationViewController = segue.destination as? DetailNoteViewController 

    if segue.identifier == "toNoteDetailView" { 
     guard let indexPath = tableView.indexPathForSelectedRow else { return } 

     let note = self.notes[indexPath.row] 
     destinationViewController?.note = note 
    } 
} 
+0

所以,我想你说的话。这听起来很合理,但我遇到了一个问题。我不能在segue中使用标识符'[indexPath.Row]'。我应该将if语句移动到'didSelectItemAt'吗? – baxu

+0

您可能想要使用代码片段编辑您的答案.. [indexPath.row]用于获取与tableView对应的数组中对象的位置,以便它可以将该对象传递给第二个视图控制器 –

相关问题