2017-08-03 61 views
0

我是新来的swift如此裸露与我。如何:用户从其他ViewController中的数组添加/删除?

我有一个空的userArrayviewController1将使用字符串。 在弹出的对话框中,viewController2,我希望用户可以添加或删除此userArray

我会使用textField为用户添加他们的字符串,但什么是一个简单的方法让用户看到数组的内容并从中删除?

如何在viewControllers之间传递此数据,同时确保它被保存,并且您推荐我使用哪些数据从阵列中删除?

预先感谢您!

回答

1

假设你有一个从viewController1viewController2一个SEGUE,你可以使用segue.destination并设置为任何你想要的segue.destination.userArray财产。

如果你没有segue,你试图做的是在视图控制器之间共享一个模型,你可以做的一件事就是创建另一个具有静态属性userArray的类,并以此方式访问它。

至于阵列移除,请参见https://developer.apple.com/documentation/swift/array/1641390-remove

+0

很好的答案谢谢! 不幸的是我现在遇到了另一个问题。当segue执行并且我到达我想要的ViewController时,导航栏中的“后退”按钮将我放回ViewController,我只是从该控件继续前进,而不是返回到它应该返回的ViewController。你知道如何解决这个问题吗? – Alvarsson

+0

@Alvarsson你能澄清一下吗?我从你的描述中了解到,这是预期的行为。祝你好运:) –

+0

当然!所以我实际上有3个ViewControllers,全部使用导航控制器。所以我想要执行的是从VC3到VC2。 但是,当我在segue后直接返回到VC2时,导航栏上的“后退”按钮(在VC2中)将我指回VC3而不是主VC1。 VC正在viewcontroller。如果我忘了提问某事就问。 谢谢@MihirThanekar – Alvarsson

-1

在您的ViewController类之外写入您的数组。然后你可以从其他ViewControllers访问它。

例子:

//ViewController1.swift 


import UIKit 

var userArray = [String]() 

class ViewController1: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 



//ViewController2.swift 


import UIKit 

class ViewController2: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     userArray.append("A") 
     userArray.append("B") 
     userArray.remove(at: 0) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

} 
+0

否;这是一个坏主意。大多数情况下,如果要添加一个全局变量(即不在类或结构的范围内),还有更好的方法。在这种情况下,@ Mihir的答案的第一部分更好。 – NRitH

相关问题