【问题标题】:Adding a new array does not update my total array count in Swift Xcode添加新数组不会更新我在 Swift Xcode 中的总数组计数
【发布时间】:2020-05-29 01:28:07
【问题描述】:

问题: 最初我的计数是正确的,但是,添加新数组不会更新我的总数组计数标签。

我有一个视图控制器 (VC),它显示一个带有总数组计数的标签。 我有一个表格视图控制器(TVC),可以从中添加或删除数组。 我有一个单独的结构文件来保存数组。

当我运行标签时,它会填充正确数量的数组。但是,在模拟器中添加新的数组项(通过 TVC)不会更新 VC 上的标签。

问题:

  1. 我应该将计数放入 VC 的函数中吗?它目前在 viewDidLoad()
  2. 添加或删除数组时是否应该调用 TVC 中的函数?
  3. 如果 2 为是,那么我是否引用 VTC 中的函数?会不会只是 updateCount() 或者我是否必须引用 VC 控制器,例如 ViewController.updateCount()

这两种方法我都试过了,但它似乎不起作用,如果我能得到确认,那就太好了,那么我可以让它工作。

提前谢谢你

【问题讨论】:

  • 修改数组时必须更新标签。它只知道你给它的时候给它的价值。
  • 如果 TVC 中的标签在另一个控制器 (VC) 中,我如何引用它(更新它)? @clawesome

标签: ios arrays swift xcode


【解决方案1】:

我的建议很糟糕,但它确实有效。

最简单的答案是使用静态变量,但它会消耗内存手机。示例代码:

import Foundation
import UIKit

class VC: UIViewController {
    static var count = 0
    let label: UILabel = UILabel()

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        label.text = String(VC.count)
    }
}

class TVC: UITableViewController {

    func updateCount() {
        VC.count = VC.count + 1
    }
}

每当在 TVC 中调用函数 updateCount() 并返回 VC 类时,它都会更新计数。

我的另一个建议是使用将 VCViewModel 作为参数发送到 TVC 的 MVVM 模式。并更新 VCViewModel 中的计数。

其他建议是使用委托模式。

【讨论】:

  • 非常感谢:)
【解决方案2】:

如果你这样做:

var x = 0
var y = x
x = 7
print(y) //y is still 0

您需要在更改数组数量时更新计数。要从另一个视图控制器调用视图控制器的功能,您需要使用协议。我建议你研究如何快速制定协议 - 我会帮助你,但如果看不到代码就很难。

【讨论】:

  • 谢谢,我已经添加了打印值的代码。更新数组的函数在我的 Struct 文件中。该函数打印出正确的值,我只是不知道如何引用我不在结构文件中的标签作为结构函数的一部分,如果这有意义的话?
  • 这就是我想要的,你需要使用一种叫做协议和委托的东西。基本上,您将一个视图控制器设为另一个视图控制器的“委托”,然后第二个视图控制器可以访问该委托并调用其函数。
猜你喜欢
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多