gpt4 book ai didi

ios - 为什么文本标签是空的,而调试器说它不是? swift 应用程序?

转载 作者:行者123 更新时间:2023-11-29 02:10:35 24 4
gpt4 key购买 nike

我是 swift 新手,我试图让我的文本标签显示在我的表格 View 上,但它只是没有显示。以下是我的文件,它确实成功构建了。

用户界面的树巢:--主视图 Controller ----UI 表格 View ------主视图 Controller 单元

我开始认为我在错误的位置重新加载了表格。

非常感谢您的帮助!

当我删除 self.mainTableView.reloadData() 时,不会显示任何单元格。此时,我仍然可以单击单元格,它们确实会使用以下调试器行进行响应:


您选择了数字 0
您选择了数字 1
您选择了数字 2

enter image description here

MainViewController.swift

import Foundation
import Locksmith
import UIKit
import Alamofire
import SwiftyJSON
import Alamofire
import JWTDecode

class MainViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var userFeed = [UserFeedRow]()


@IBOutlet weak var mainTableView: UITableView!

override func viewDidLoad() {

mainTableView.registerClass(MainViewTableViewCell.self, forCellReuseIdentifier: "mainTableViewCell")

mainTableView.delegate = self
mainTableView.dataSource = self
mainTableView.separatorStyle = UITableViewCellSeparatorStyle.None

}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.userFeed.count
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("You selected Number \(indexPath.row)")
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
UITableViewCell {

println("celler \(indexPath.row)")

var cell:MainViewTableViewCell = self.mainTableView.dequeueReusableCellWithIdentifier("mainTableViewCell", forIndexPath:indexPath) as MainViewTableViewCell

let feedRow = userFeed[indexPath.row]
println(feedRow.title)
cell.mainTableViewCellTitle?.text = feedRow.title

return cell
}

override func viewDidAppear(animated: Bool) {

// Alamofire GET user/user_feed
// Display user feed in tableview inside of uiviewcontroller

loadUserFeed()

}

func loadUserFeed(){
println("loadUserFeed")
let api = API()
api.getUserFeed(){
responseObject, error in


var json = JSON(responseObject!)

if error == nil{

// get feed
var responseFeed = json["feed"]
//println(json)

for (index: String, subJson: JSON) in responseFeed {
var aTitle = subJson["title"].stringValue
println(aTitle)

// save object to array here
var row = UserFeedRow(title: aTitle)

self.userFeed.append(row) // Appending userfeed
}

self.mainTableView.reloadData()
}

}

}
}

自定义TableView单元

import Foundation
import UIKit

class MainViewTableViewCell: UITableViewCell{


@IBOutlet weak var mainTableViewCellBackgroundImage: UIImageView!

@IBOutlet weak var mainTableViewCellTitle: UILabel!


override func awakeFromNib() {
super.awakeFromNib()

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

}

}

最佳答案

我会将我的评论转换为答案并附上解释。

基本上有两种处理自定义 UITableViewCell 的方法:一种是通过 Storyboard(原型(prototype)单元格)创建它们,就像您所做的那样,并且(通常)将它们分配给自定义类;另一种是单独创建它们(使用自定义类,或使用自定义 NIB 文件,或使用自定义类 + NIB 文件)。

在 Storyboard中创建单元格时 registerClass:forCellReuseIdentifier: 在后台跳舞。当您在代码中调用此方法时,它会切断 Storyboard 单元格与您已经创建的自定义类之间的连接,而只是从您的自定义类创建单元格,在这种情况下,该单元格不包含 View 信息,并呈现为空。

额外的建议:如果您认为您可能需要一个特定的单元格而不是应用程序中的一个单元格,最好使用 NIB + 类方法创建它,并调用 registerNIB:forCellReuseIdentifier : 你想在哪里使用它。有了这个,而不是将单元格复制粘贴到您需要的任何 Storyboard View 中(然后如果需要更改则必须单独更改所有这些 View ),您可以在整个应用程序中维护一个 View /NIB。

关于ios - 为什么文本标签是空的,而调试器说它不是? swift 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29323944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com