使用Segue而不查看View Controller

时间:2016-10-04 16:49:14

标签: ios swift

我是编码的新手,所以感谢任何帮助!

基本上,构建我的应用程序包括将数据传递给另一个视图控制器。我想要的只是传递数据,而不是用户在物理上查看它也被传递给View Controller。我设置了segues,它可以很好地传递到另一个View Controller。

我在截图中写的代码,例如。 departments允许查看其他视图控制器上的数据。

我的问题是,我编辑或添加到此行的代码是什么,以便仍然传递数据 - 用户无需在物理上查看控制器也将其传递?我假设某种类型的' *ngFor'将在这行代码中实现,但是当我这样做时它似乎不起作用。

SCREENSHOT

4 个答案:

答案 0 :(得分:1)

Segues旨在转到另一个View Controller。

为了在不移动的情况下将数据从一个视图传递到另一个视图,您可以使用 NSNotificationCentre 代理

答案 1 :(得分:0)

调用方法||时,转换到其他场景的过程已经在进行中(不是直观地)。

为了通过转换传递数据,这是最好的方法。

但是,如果您想将数据传递给视图控制器以便稍后显示,我建议您只需将其存储在变量(可能在您的情况下为数组)中,并在转换时将其提供给目标视图控制器。 您也可以将它存储在两个视图控制器之间的共享变量中(静态属性,...),但我建议您不要这样做。

答案 2 :(得分:0)

回答您的具体问题:

考虑:

  • ParentViewController作为当前可见的控制器。
  • ChildViewController作为您希望将数据传递给的隐藏控制器。

您想从ParentViewController创建对ChildViewController的引用。

如果您正在使用Storyboard,则可以通过在InterfaceBuilder中向ParentViewController添加ContainerView来实现此目的。这将创建一个嵌入式视图控制器。通过将您在ParentViewController中添加的基础视图设置为hidden

,可以使其不可见

ParentViewController 加载时,prepareForSegue实际上会被嵌入的 ChildViewController 调用。然后,您可以将其分配给本地属性,以保留对它的引用。

var destViewController: ViewTwo!

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if let childVC = segue.destination as? ViewTwo{

        self.destViewController = childVC
    }
}

func addDataToChildViewController(){
    destViewController.textLabel.text = self.textField1.text
    ...
}

现在,我想指出,在这个庄园中使用ViewController很有可能不是一个理想的解决方案。 ViewControllers用于显示视图。如果你不这样做,那么你可能想重新考虑这个解决方案。

答案 3 :(得分:-1)

您可以尝试设置单例来存储数据:

class DataSingleton {
  static let sharedInstance = DataSingleton()
  //Add variables to store here
}

//Referencing
let singleton = DataSingleton.sharedInstance
singleton.theVariable