我正在尝试使用segue传递数据,但没有显示屏幕。我的项目中有两个视图控制器,我将它们命名为FirstViewController
和SecondViewController
。
在FirstViewController
上,我使用Show
自适应Segue使用performSegueWithIdentifier
传递数据。将调用prepareForSegue
方法,并识别identifier
我设置为显示SecondViewController
。
然而,问题是我不想显示SecondViewController
。在前往SecondViewController
之前,我的用户可能还想做其他事情。
我是iOS编程新手,我只知道使用segue传递数据。如果有方法可以将数据与segue分开,请与我分享。
编辑:进一步阐述我的问题。我正在使用TabBarController
,并且可以在标签栏上访问View Controllers
。因此,当我SecondViewController
上的某些数据已经从FirstViewController
进行“隔离”时,我可以返回FirstViewController
添加更多数据。在SecondViewController
UIRefreshControl
我需要更新的数据。
答案 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。