关于ios:在没有segue的情况下在View Controllers之间传递数据

Passing Data between View Controllers without segue

本问题已经有最佳答案,请猛点这里访问。

我的设计撞到了墙上。我正在尝试将字符串从一个视图控制器传递到另一个视图控制器。这两个控制器没有与Segue连接。我附上了我故事板的截图。我有一种感觉,我唯一的选择是使用一个单件,或者这是可能的代表?不使用方法:

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

我不能通过SEgue标识符访问VC1。在不访问标识符的情况下,如何实现这一点?

请看一看图像,让我知道我有什么选择,什么是最好的在这里使用。

Storyboard design


如果其小类或日期字符串变量,你可以使用一些userdefault通using that类变量或类vc2.data日期=日期如何使用快捷userdefaults userdefaults如何使用?P></

如果像table or number of its黑莓用户名单,你可以使用你在商店能丛录retrieve from any视图控制器我想帮在using录录as a dictionary中迅速?P></

如果how are some双控制器,你可以使用delegates连通。在delegats:delegates雨燕?P></

You can also not sure if你是使用notifications when will be available/日或在线发送或发送一些基本动作,if something is触发。P></

通notifications日期使用日期使用notificationcentre how to通在3.0和2.0 nsnotificationcenter Swift雨燕?P></


如果你你,你,你可以以编程方式设置第二类知道VC值(三线)P></

1
2
3
4
5
6
let storyBoard: UIStoryboard = UIStoryboard(name:"Main", bundle: nil)
let newViewController = storyBoard.instantiateViewController(withIdentifier:"newViewController") as! NewViewController

newViewController.stringVariable = stringVariable

self.present(newViewController, animated: true, completion: nil)


使用单程is to the view to the navigational heiarchy接入控制器。P></

你想viewcontroller from the property是通日期tabBarControllershould be the same instance of the表酒吧VC2that is a part ofP></

1
2
3
4
5
6
7
8
9
10
11
12
func setStringForVC2(stringToSet:String) {
    guard let myTabBarController = tabBarController, let tabBarViewControllers = myTabBarController.viewControllers else {
        return
    }

    //need to access index 1 since vc's are stored in tabbarcontroller starting with 0, so 1 to access 2nd vc.
    if (tabBarViewControllers.indices.contains(1)) {
        if let vc2 = tabBarViewControllers[1] as? VC2Class {
            vc2.stringIWantToSet = stringToSet
        }
    }
}