【问题标题】:Why is the label's text not updating?为什么标签的文本没有更新?
【发布时间】:2017-08-22 03:56:43
【问题描述】:

我正在尝试将数据从表格视图单元格按钮转发到视图控制器。根据在哪个行中选择了按钮,我希望相应地设置以下视图控制器标签的文本。但是,当我尝试这样做时,以下视图控制器中的标签保持空白并且不会更改。我该如何更改?

我在表格视图控制器中向tipButton 添加了一个操作,该操作创建了KeysController 的segue,仅供参考。

表格视图单元格代码:

class DrillsTableViewCell: UITableViewCell {

var videoURL:[URL] = [URL(fileURLWithPath: "/Users/RalphSimmonds/Desktop/plainjayne/coolinDB/cook.mov"), URL(fileURLWithPath: "/Users/RalphSimmonds/Desktop/plainjayne/coolinDB/check.MOV")]
var video = URL(fileURLWithPath: String())
var initialRow = Int()
var firstTips = ["Tip 1: Stay Hydrated", "Tip 1: Keep elbow tucked", "x", "Tip 1: Take quick breaks:", "Tip 1: Keep your head up", "Tip 1: Don't cross your feet", "Tip 1: Don't do more than 15 reps"]

var player: AVPlayer?
var playerController = AVPlayerViewController()

@IBOutlet weak var drillTitle: UILabel!
@IBOutlet weak var tipButton: UIButton!
@IBAction func tipsButton(_ sender: UIButton) {
    print(String(initialRow))

    let tipsVC = UIStoryboard(name: "main", bundle: nil).instantiateViewController(withIdentifier: "KeysController") as! KeysController
    tipsVC.key1.text = firstTips[initialRow]
}

我要更新其标签的视图控制器的代码:

import UIKit

class KeysController: UIViewController {
    @IBOutlet weak var topLabel: UILabel!
    @IBOutlet weak var key1: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

【问题讨论】:

  • 每次从 tableViewCell 按下按钮时,您都在创建 viewController 的新对象并设置标签的文本。您需要使用 viewController 的现有对象来更改它的属性(即标签)的值。

标签: ios swift uitableview segue


【解决方案1】:

在视图加载之前,您的插座不会连接。

尝试在 KeysController 中创建一个属性,例如:

var keyText: String?

实例化视图控制器后设置属性:

tipsVC.keyText = firstTips[initialRow]

然后在你的KeysController.viewDidLoad 方法中:

key1.text = keyText

【讨论】:

    【解决方案2】:

    这是因为标签key1尚未加载,最好在viewdidload上更新它

     @IBAction func tipsButton(_ sender: UIButton) {
         print(String(initialRow))
    
         let tipsVC = UIStoryboard(name: "main", bundle: nil).instantiateViewController(withIdentifier: "KeysController") as! KeysController
         tipsVC.key1String = firstTips[initialRow] }
    
    
    
    
      import UIKit
    
    
          class KeysController: UIViewController {
         var key1String:String = ""
    
    
         @IBOutlet weak var topLabel: UILabel!
         @IBOutlet weak var key1: UILabel!
    
    
         override func viewDidLoad() {
             super.viewDidLoad()
             key1.text = key1String
    
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      相关资源
      最近更新 更多