【问题标题】:How can I access IBOutlet in another class?如何在另一个班级访问 IBOutlet?
【发布时间】:2017-07-14 18:22:50
【问题描述】:

我在这个问题中遇到了同样的错误:how can i access IBOutlet in another class? in swift 但是当我在我的 Xcode 中编写时(对于带有 Swift 3 的 iOS 8)我有一个错误。

我的代码是这样的。我想通过一键操作编辑Convert_Table_Third_Cell 类中的amauntOut(是UILabel):

@IBAction func actionTextb(_ sender: Any) {
    print("you writted \(String(describing: amauntEnter.text!))----")

    //Convert_Table_Third_Cell.amauntOut.text = amauntEnter.text ----> is a tried
    //var dash : abcViewController = storyBoard.instantiateViewControllerWithIdentifier("abc") as! abcViewController ----> is a tried
    //var a = dash.getXYZ() ----> is a tried

    var update: Convert_Table_Third_Cell = UIStoryboard.instantiateViewController(UIStoryboard) as! Convert_Table_Third_Cell
    update.amauntOut.text = "hola"
}

我收到此错误:

实例成员“instantiateViewController”不能用于类型“UIStoryboard”;您的意思是改用这种类型的值吗?

有人可以帮我吗?

这是第一堂课

import UIKit

class Convert_Table_Second_Cell: UITableViewCell {

    @IBOutlet var amauntEnter: UITextField!

    var theNumber = getTheNumber()



    @IBAction func actionTextb(_ sender: Any) {
        print("you writted \(String(describing: amauntEnter.text!))----")

        let storyboard = UIStoryboard.init(name: "convert ID", bundle: nil)
        let update = storyboard.instantiateViewController(withIdentifier:  "convert ID") as!  Convert_Table_Third_Cell

        update.amauntOut.text = "hola"


        let aa = "hola hillel----------------------"
        print(aa)
        print(theNumber.usedParameters(ArrayOfNumbers: unitInOutlet, TipOfData: 3))

    }

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        print("this is the valeu \(theNumber.hola)")
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

这是我要编辑的第二个标签

导入 UIKit

类 Convert_Table_Third_Cell: UITableViewCell {

@IBOutlet var amauntOut: UILabel!

@IBOutlet var UnityMeasurment: UILabel!


override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}

【问题讨论】:

    标签: ios swift swift3 iboutlet


    【解决方案1】:

    您的方法不正确。视图控制器在屏幕上显示时被启动。一次只能显示一个视图控制器对象。在您的代码中,您正在启动一个全新的视图控制器并将文本设置为插座。所以这行不通。相反,您需要在视图控制器的现有实例上将文本设置为文本字段。

    为此,在要接收文本字段内容更新的视图控制器中,在通知中心注册以接收内容更新函数调用。

    NotificationCenter.default.addObserver(self, selector: #selector(listnerFunction(_:)), name: NSNotification.Name(rawValue: "notificationName"), object: nil)
    
    func listnerFunction(_ notification: NSNotification) {
        if let data = notification.userInfo?["data"] as? String {
            self.textField.text = data
        }
    }
    

    然后在另一个视图控制器中,如果你想向上面的视图控制器发送文本并更新文本,只需将数据发布到通知中心

    let data:[String: String] = ["data": "YourData"]
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "notificationName"), object: nil, userInfo: data) 
    

    【讨论】:

      【解决方案2】:

      实例成员“instantiateViewController”不能用于类型“UIStoryboard”;您的意思是改用这种类型的值吗?

      它说你不能通过UIStoryboardclass 使用instantiateViewControllerinstance member

      var update: Convert_Table_Third_Cell = UIStoryboard.instantiateViewController(UIStoryboard) as! Convert_Table_Third_Cell 更改为var update: Convert_Table_Third_Cell = storyboard?.instantiateViewController(withIdentifier: {YourStoryBoardID}) as! Convert_Table_Third_Cell

      【讨论】:

      • 谢谢,但是当我写 var update: Convert_Table_Third_Cell = storyboard?.instantiateViewController(withIdentifier: "convert ID") as! Convert_Table_Third_Cell 时遇到问题,我收到一个错误,提示“使用未解析的标识符 'storyboard'”,当我更改 UIStorybord 'Instance member 'instantiateViewController' 时无法使用输入“UIStoryboard”;你的意思是使用这种类型的值吗?像评论一样是 UITableViewCell
      • storyboardUIViewController 的成员。您可以改用UIStoryboard.init(name: "{Your Storyboard Name}", bundle: nil)
      • 它发给我这个错误:Cast from 'UIViewController' to unrelated type 'Convert_Table_Third_Cell' always fails我现在不知道如何修复它。
      • 看来你在课堂上打电话给actionTextb(_ sender: Any),你从来没有提到过,你在Convert_Table_Third_Cell中更新amauntOut,你不知道Convert_Table_Third_Cell到底是什么。发布更多代码让我们帮助您。 1.actionTextb(_ sender: Any)在哪里? 2.什么时候触发? 3.你想更新哪个Convert_Table_Third_Cell
      • 抱歉耽搁了。我在Convert_Table_Third_Cell 中提到@IBOutlet var amauntOut: UILabel! 我将在问题中发布2 个分类
      猜你喜欢
      • 2017-11-05
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多