Swift:访问另一个ViewController的字段

时间:2015-02-27 13:55:37

标签: ios swift

我想要一个标签式应用程序,其中一个页面保留用于调试信息。所以在那个页面上,我有一个文本视图。我希望其他视图控制器和单例(数据访问等)能够添加到文本区域。我在这里尝试了单例模式,但我认为这不起作用,因为单例实例与应用程序使用的“真实”实例不同。有没有办法从另一个ViewController或应用程序中的其他类访问实际实例?

这是DebugViewController:

class DebugViewController : UIViewController {

@IBOutlet weak var debugTextField: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()
    debugTextField.text = ""
}

func debug(text : String) {
    if debugTextField == nil {
        debugTextField = UITextView()
        debugTextField.text = ""
    }
    println("\(NSDate()) : \(text)")
    debugTextField.text = "\(NSDate()) : \(text) \n" + debugTextField.text
}

}

2 个答案:

答案 0 :(得分:0)

单身人士会工作,但你无法将其与IB绑定。您需要在AppDelegate中以编程方式创建它。

另一个想法就是在您需要的类中添加对DebugViewController的引用,如

var sharedDebugViewController: DebugViewController!

并从AppDelegate初始化它们。

答案 1 :(得分:0)

您不能通过传递可以执行此操作的变量将值分配给其他控制器UI(如label,textfeild或其他任何其他控件)

你可以使用全局类来创建它,所以创建为

 class GlobalVariables : NSObject {

    var variableOne : String = String()

}
var global = GlobalVariables()

现在当您收到消息时,请按global.variableOne = your message进行操作  如果您已将变量设置为全局类,则可以在应用程序中随意访问此变量。 在另一个控制器viewdidload上  用作

debugTextView.text = global.variableOne