使用segue传递数据而不显示屏幕

时间:2015-12-11 16:30:44

标签: ios swift segue

我正在尝试使用segue传递数据,但没有显示屏幕。我的项目中有两个视图控制器,我将它们命名为FirstViewControllerSecondViewController

FirstViewController上,我使用Show自适应Segue使用performSegueWithIdentifier传递数据。将调用prepareForSegue方法,并识别identifier我设置为显示SecondViewController

然而,问题是我不想显示SecondViewController。在前往SecondViewController之前,我的用户可能还想做其他事情。

我是iOS编程新手,我只知道使用segue传递数据。如果有方法可以将数据与segue分开,请与我分享。

编辑:进一步阐述我的问题。我正在使用TabBarController,并且可以在标签栏上访问View Controllers。因此,当我SecondViewController上的某些数据已经从FirstViewController进行“隔离”时,我可以返回FirstViewController添加更多数据。在SecondViewController UIRefreshControl我需要更新的数据。

3 个答案:

答案 0 :(得分:1)

如果您在代码中执行segue,您可以通过以下方式执行您想要的操作

1)从故事板中实例化视图控制器

let storyboard: UIStoryboard = UIStoryboard(name: "SecondViewController", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("set_it_in_IB") as! SecondViewController

2)设置您需要设置的属性,因为视图控制器已经实例化

vc.someProperty = "asd"

3)Segue!

viewController.presentViewController(viewControllerToPresent: UIViewController, animated: Bool, completion: (() -> Void)?)

希望有所帮助!

答案 1 :(得分:1)

从用户的角度来看,他们不知道数据是否在更新之前是否正在更新,因此使用prepareFoSegue函数传递数据可能很好。

否则,您可以尝试通过<{1}}和viewDidLoad上的FirstViewController设置通知

SecondViewController

并在需要使用

更新数据时发布NSNotificationCenter.defaultCenter().addObserver(self, selector: nil, name: updateSecondVCNotification, object: nil)的通知

FirstViewController

然后在第二个视图控制器上将NSNotificationCenter.defaultCenter().postNotificationName(updateSecondVCNotification, object: self)的选择器设置为您希望它执行的任何函数名称的字符串,如addObserver

"reloadNewData"

这有帮助吗?不要忘记将func reloadNewData() { tableView.reloadData() } 设置为updateSecondVCNotification顶部的全局字符串常量。在https://www.andrewcbancroft.com/2014/10/08/fundamentals-of-nsnotificationcenter-in-swift/

了解有关FirstViewController的详情

呜!通知! \(^▽^)/

答案 2 :(得分:0)

我不确定这是否适合您,但您可以将数据保存在FirstViewController的内存中,持续时间,用户仍在进行交互并提供反馈,一旦完成,通过segue将所有数据发送到SecondViewController。