我的自定义单元格未显示在我的表格视图中
Posted
技术标签:
【中文标题】我的自定义单元格未显示在我的表格视图中【英文标题】:My custom cells are not showing up in my tableview 【发布时间】:2019-06-17 02:59:12 【问题描述】:所以我一直试图让我的自定义单元格显示在这个 tableview 上,但我不确定它们为什么没有显示
我已经检查了其他堆栈溢出问题并尝试了他们的修复,但无济于事。请忽略 aws 的内容,因为您可以看到我对文本进行了硬编码,因此我现在可以让它们出现。
这是包含 tableview 的类中的代码
import Foundation
import AWSDynamoDB
import AWSCognitoIdentityProvider
import UIKit
// this will be the main feed class showing the user data
class UserDetailTableViewController : UITableViewController
// attributes for the custome cell
@IBOutlet weak var testing: UITextField!
@IBOutlet var Table: UITableView!
var response: AWSCognitoIdentityUserGetDetailsResponse?
var user: AWSCognitoIdentityUser?
var pool: AWSCognitoIdentityUserPool?
var questiondata : Array<Phototext> = Array()
override func viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
super.viewDidLoad()
self.pool = AWSCognitoIdentityUserPool(forKey: AWSCognitoUserPoolsSignInProviderKey)
if (self.user == nil)
self.user = self.pool?.currentUser()
// grabbing data from our aws table
updateData()
self.refresh()
override func viewWillDisappear(_ animated: Bool)
super.viewWillDisappear(animated)
self.navigationController?.setToolbarHidden(true, animated: true)
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
self.navigationController?.setToolbarHidden(false, animated: true)
@IBAction func Questions(_ sender: Any)
performSegue(withIdentifier: "ask", sender: self)
// MARK: - IBActions
@IBAction func signOut(_ sender: AnyObject)
self.user?.signOut()
self.title = nil
self.response = nil
self.refresh()
// reloads the prior view
func refresh()
self.user?.getDetails().continueOnSuccessWith (task) ->
AnyObject? in
DispatchQueue.main.async(execute:
self.response = task.result
self.title = self.user?.username
// saving the user name from the main menu
username123 = self.user?.username! ?? "broken"
)
return nil
// function that calls to our aws dynamodb to grab data from the
// user
//and re update questions
// the array list
func updateData()
let scanExpression = AWSDynamoDBScanExpression()
scanExpression.limit = 20
// testing to grabt the table data upon startup
let dynamoDBObjectMapper = AWSDynamoDBObjectMapper.default()
dynamoDBObjectMapper.scan(Phototext.self, expression:
scanExpression).continueWith(block:
(task:AWSTask<AWSDynamoDBPaginatedOutput>!) -> Any? in
if let error = task.error as NSError?
print("The request failed. Error: \(error)")
else if let paginatedOutput = task.result
// passes down an array of object
for Photo in paginatedOutput.items as! [Phototext]
// loading in the arraylist of objects
// adding the objects to an arraylist
self.questiondata.append(Photo)
DispatchQueue.main.async
//code for updating the UI
return ()
)
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
// returning the number of rows
return 3
func tableView(_ tableView: UITableView, cellForRowAt indexPath:
IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier:
"Questionpost", for: indexPath) as! QuestionCell
cell.QuestionText.text = "call it"
cell.Subject.text = "a day"
return cell
这是 QuestionCell 类的代码
import UIKit
class QuestionCell: UITableViewCell
@IBOutlet weak var Subject: UILabel!
@IBOutlet weak var QuestionText: UITextView!
单元格类叫做 QuestionCell,我在故事板单元格上留下的标识符是 Questionpost
这是我的故事板的照片:
【问题讨论】:
在单元格的内容视图中,它们被命名为主题和问题。 我已经更新了照片 用户详细信息视图控制器包含表格视图,其中有一个名为 Questionpost 的单元格,该单元格有一个包含这两个文本字段的内容视图,如果我遗漏了一些明显的错误,请见谅。 我认为这不是问题,因为文本是黑色的,我现在只是用白色文本框尝试过,当我硬编码文本时,它显示了。我已经更新了代码以反映我的整个班级。但我现在不依赖aws的东西,因为我只是想让单元格显示这个硬编码的文本。 在情节提要中,您是否将用户详细信息场景标记为 UserDetailTableViewController? 【参考方案1】:我已通过声明具有正确类型的扩展来修复它。
extension UserDetailTableViewController: UITableViewDataSource,UITableViewDelegate
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
// returning the number of rows
return 3
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "Questionpost", for: indexPath) as! QuestionCell
cell.QuestionText.text = "call it"
cell.Subject.text = "a day"
return cell
很好地解释了正在发生的事情,当您嵌入 tableview 时,您需要遵守 UITableViewDataSource 和 UITableViewDelegate。
Redundant conformance of TableView to protocol UITableViewDataSource with Xib Files
【讨论】:
以上是关于我的自定义单元格未显示在我的表格视图中的主要内容,如果未能解决你的问题,请参考以下文章