Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从Tableview更新Viewcontroller中的标签文本_Ios_Swift_Uitableview_Uiviewcontroller - Fatal编程技术网

Ios 从Tableview更新Viewcontroller中的标签文本

Ios 从Tableview更新Viewcontroller中的标签文本,ios,swift,uitableview,uiviewcontroller,Ios,Swift,Uitableview,Uiviewcontroller,我的问题与这里的问题类似: 我有一个viewcontroller,它包含一个带有一些文本字段的tableview。当用户在透视文本字段中输入数量和金额时,我想在运行时按最后一个键盘上的return键后更新tableview之外的标签 在做了一些研究之后,我意识到这将在单元格本身的textfield委托的textfielddendediting函数中得到一些信息,但是我如何从viewcontroller访问标签文本以便更新它呢?我将提供下面的代码 import UIKit import Realm

我的问题与这里的问题类似:

我有一个viewcontroller,它包含一个带有一些文本字段的tableview。当用户在透视文本字段中输入数量和金额时,我想在运行时按最后一个键盘上的return键后更新tableview之外的标签

在做了一些研究之后,我意识到这将在单元格本身的textfield委托的textfielddendediting函数中得到一些信息,但是我如何从viewcontroller访问标签文本以便更新它呢?我将提供下面的代码

import UIKit
import RealmSwift

class MaterialsCell: UITableViewCell, UITextFieldDelegate{
    @IBOutlet weak var materialsDescription: UITextField!
    @IBOutlet weak var materialsQuantity: UITextField!
    @IBOutlet weak var materialsAmount: UITextField!

    func saveMaterialsData() {
        let saveMaterials = SPMaterialsRequest()
        saveMaterials.setValue(self.materialsDescription!.text, forKey: "materialDescriptiopn")
        saveMaterials.setValue(self.materialsQuantity!.text, forKey: "materialQuantity")
        saveMaterials.setValue(self.materialsAmount!.text, forKey: "materialAmount")
        let realm = try! Realm()

        do {
            try realm.write {
                realm.add(saveMaterials)
                print("added \(saveMaterials.materialDescription) to Realm Database")
                print("added \(saveMaterials.materialQuantity) to Realm Database")
                print("added \(saveMaterials.materialAmount) to Realm Database")
                print("added \(saveMaterials.materialTotal) to Realm Database")
            }
        } catch {
            print(error)
        }
    }

    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
    }

    func textFieldDidEndEditing(_ textField: UITextField) {

    }
}

import UIKit
import RealmSwift

class ServiceProMaterialsController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    @IBOutlet weak var materialsView: UITableView!
    @IBOutlet weak var materialsTotal: UILabel!

    var spMaterialsRequest: Results<SPMaterialsRequest>?

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cellIdentifier = "MaterialsCell"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? MaterialsCell
            else {
                fatalError("Dequed Cell is not an instance of MaterialsCell")
        }

        cell.materialsDescription.text = ""
        cell.materialsQuantity.text = ""
        cell.materialsAmount.text = "" 

        return cell
    }
}
导入UIKit
导入RealmSwift
类MaterialsCell:UITableViewCell、UITextFieldDelegate{
@IBOUTLE弱var材料说明:UITextField!
@IBOUTLE弱var材料数量:UITextField!
@IBOUTLE弱var材料数量:UITextField!
func saveMaterialsData(){
让saveMaterials=SPMaterialsRequest()
saveMaterials.setValue(self.materialdescription!.text,forKey:“materialDescriptiopn”)
saveMaterials.setValue(self.materialQuantity!.text,forKey:“materialQuantity”)
saveMaterials.setValue(self.materialsAmount!.text,forKey:“materialAmount”)
让realm=try!realm()
做{
试试realm.write{
realm.add(保存材质)
打印(“已将\(saveMaterials.materialDescription)添加到领域数据库”)
打印(“已将\(saveMaterials.materialQuantity)添加到领域数据库”)
打印(“已将\(saveMaterials.materialAmount)添加到领域数据库”)
打印(“已将\(saveMaterials.materialTotal)添加到领域数据库”)
}
}抓住{
打印(错误)
}
}
重写func awakeFromNib(){
super.awakeFromNib()
//初始化代码
}
覆盖功能设置选定(uSelected:Bool,动画:Bool){
super.setSelected(选定,动画:动画)
//为所选状态配置视图
}
func textField编辑(textField:UITextField){
}
}
导入UIKit
导入RealmSwift
类ServiceProMaterialsController:UIViewController、UITableViewDataSource、UITableViewDelegate{
@IBVAR材料视图:UITableView!
@IBOUTLE弱var材料总计:UILabel!
var spMaterialsRequest:结果?
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
返回1
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
让cellIdentifier=“MaterialsCell”
guard let cell=tableView.dequeueReusableCell(标识符:cellIdentifier,for:indexPath)作为?MaterialsCell
否则{
fatalError(“Dequed单元不是MaterialsCell的实例”)
}
cell.materialsDescription.text=“”
cell.materialsQuantity.text=“”
cell.materialsAmount.text=“”
返回单元
}
}

创建自定义委托,在viewcontroller中实现该委托。将委托传递给该单元格,同时将该单元格出列并在textfielddidediting中调用该委托,如:

import UIKit
import RealmSwift

protocol CustomProtocol{
func textEntered(text : String,index:Int)
}

class MaterialsCell: UITableViewCell, UITextFieldDelegate{
    @IBOutlet weak var materialsDescription: UITextField!
    @IBOutlet weak var materialsQuantity: UITextField!
    @IBOutlet weak var materialsAmount: UITextField!

    var delegate : CustomProtocol?
    var index : Int?

    func saveMaterialsData() {
        let saveMaterials = SPMaterialsRequest()
        saveMaterials.setValue(self.materialsDescription!.text, forKey: "materialDescriptiopn")
        saveMaterials.setValue(self.materialsQuantity!.text, forKey: "materialQuantity")
        saveMaterials.setValue(self.materialsAmount!.text, forKey: "materialAmount")
        let realm = try! Realm()

        do {
            try realm.write {
                realm.add(saveMaterials)
                print("added \(saveMaterials.materialDescription) to Realm Database")
                print("added \(saveMaterials.materialQuantity) to Realm Database")
                print("added \(saveMaterials.materialAmount) to Realm Database")
                print("added \(saveMaterials.materialTotal) to Realm Database")
            }
        } catch {
            print(error)
        }
    }

    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
    }

    func textFieldDidEndEditing(_ textField: UITextField) {
        //Usage of custom protocol
        delegate?.textEntered(text : textField.text!,index:self.index!)
    }
}

import UIKit
import RealmSwift

class ServiceProMaterialsController: UIViewController, UITableViewDataSource, UITableViewDelegate , CustomProtocol{
    @IBOutlet weak var materialsView: UITableView!
    @IBOutlet weak var materialsTotal: UILabel!

    var spMaterialsRequest: Results<SPMaterialsRequest>?

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cellIdentifier = "MaterialsCell"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? MaterialsCell
            else {
                fatalError("Dequed Cell is not an instance of MaterialsCell")
        }
        //Do 1 and 2
        cell.delegate = self // 1
        cell.index = indexPath.row //2
        cell.materialsDescription.text = ""
        cell.materialsQuantity.text = ""
        cell.materialsAmount.text = "" 

        return cell
    }

   //Implementing CustomProtocol
   func textEntered(text : String,index:Int){
      materialsTotal.text = text
    }

}
导入UIKit
导入RealmSwift
协议自定义协议{
func textEntered(文本:字符串,索引:Int)
}
类MaterialsCell:UITableViewCell、UITextFieldDelegate{
@IBOUTLE弱var材料说明:UITextField!
@IBOUTLE弱var材料数量:UITextField!
@IBOUTLE弱var材料数量:UITextField!
var委托:定制协议?
var指数:Int?
func saveMaterialsData(){
让saveMaterials=SPMaterialsRequest()
saveMaterials.setValue(self.materialdescription!.text,forKey:“materialDescriptiopn”)
saveMaterials.setValue(self.materialQuantity!.text,forKey:“materialQuantity”)
saveMaterials.setValue(self.materialsAmount!.text,forKey:“materialAmount”)
让realm=try!realm()
做{
试试realm.write{
realm.add(保存材质)
打印(“已将\(saveMaterials.materialDescription)添加到领域数据库”)
打印(“已将\(saveMaterials.materialQuantity)添加到领域数据库”)
打印(“已将\(saveMaterials.materialAmount)添加到领域数据库”)
打印(“已将\(saveMaterials.materialTotal)添加到领域数据库”)
}
}抓住{
打印(错误)
}
}
重写func awakeFromNib(){
super.awakeFromNib()
//初始化代码
}
覆盖功能设置选定(uSelected:Bool,动画:Bool){
super.setSelected(选定,动画:动画)
//为所选状态配置视图
}
func textField编辑(textField:UITextField){
//自定义协议的使用
委托?.textEntered(文本:textField.text!,索引:self.index!)
}
}
导入UIKit
导入RealmSwift
类ServiceProMaterialsController:UIViewController、UITableViewDataSource、UITableViewDelegate、CustomProtocol{
@IBVAR材料视图:UITableView!
@IBOUTLE弱var材料总计:UILabel!
var spMaterialsRequest:结果?
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
返回1
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
让cellIdentifier=“MaterialsCell”
guard let cell=tableView.dequeueReusableCell(标识符:cellIdentifier,for:indexPath)作为?MaterialsCell
否则{
fatalError(“Dequed单元不是MaterialsCell的实例”)
}
//做1和2
cell.delegate=self//1
cell.index=indexPath.row//2
cell.materialsDescription.text=“”
cell.materialsQuantity.text=“”
cell.materialsAmount.text=“”
返回单元
}
//实现定制协议
func