首先,首先,我想做什么?好吧,我正在尝试运行类似于标签系统的东西,它使用字典String,[String]类型过滤掉帖子中的数据并将其显示在屏幕上。我已经在控制台级别上解决了这个问题,但我很难理解如何使用它来实现这一点,这有点奇怪。我尝试并在UI中返回nil,但在控制台级别上运行完美。
简化。我希望快速标签过滤的数组显示在tableview
中我再次重复这个,控制台工作得很完美,但UI变得古怪并且返回nil或者为零。好的,这是代码。
不是100%确定这个区域会导致问题,但我在这里显示以防万一。
//this is the part where I add the stuff into the console
//and add the dictionary part.
@IBAction func ReplyAction(_ sender: UIButton) {
if !(TextFieldForComments.text?.isEmpty)! && TextFieldForComments.text != nil
{
CommentGlobals.shared.addToCommentSection(newElement: TextFieldForComments.text!)
let tagCheck = TextViewForComment.text
if !quickTags.FilteredComments.keys.contains(TextViewForComment.text){
quickTags.FilteredComments.updateValue(["\(String(describing: TextFieldForComments.text))"], forKey: tagCheck!)
print("Hey here is the dictinary you wanted \(quickTags.FilteredComments)")
}
else {
quickTags.FilteredComments[tagCheck!]?.append(CommentGlobals.shared.commentSection.last!)
print("Hey here is the dictinary you wanted wo wo \(quickTags.FilteredComments)")
}
TextFieldForComments.text = ""
//this line of code is important or it
//won't insert the table view right.
CommentFeed.insertRows(at: [IndexPath(row: CommentGlobals.shared.commentSection.count-1, section: 0)], with: .automatic)
}
这是问题区域
//this is the problem area
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let ceal = CommentFeed.dequeueReusableCell(withIdentifier: "commentFeed", for: indexPath)
//guard let selectedDictionary = quickTags.FilteredComments["\(TextViewForComment)"] else {return ceal}
//this is the part that works, but noted it out for reference
//this doesn't work for what I am trying to do because
//I don't want to display the comments of every view
//ceal.textLabel?.text = "\(CommentGlobals.shared.commentSection[indexPath.row])"
//this is failure. I also tried another way ,but it just printed nil
//on to the UI
//ceal.textLabel?.text = "\(selectedDictionary[indexPath.row])"
return ceal
}
好的,如果您需要更多信息,请告诉我。
哦,是的,我不能说这完全可以在控制台级别上运行,但是当我试图将它放到用户界面时却不行。
我还将快速标签存储在一个静态数组中,然后将其余部分存储在一个单独的
中这是预期的输出(UI)
comment
comment
comment
当前输出就像这样(UI)
(it does nothing, runs nil, or crashes)
其他一些消息来源导致事情就像这样
comment comment comment
所有这些都在同一条线上而不是我想要的。
func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
// return CommentGlobals.shared.commentSection.count
print(quickTags.FilteredComments.count)
return CommentGlobals.shared.commentSection.count
}
答案 0 :(得分:0)
UITableView
不包含自己的数据集,而是从dataSource
获取。 insertRows(at:, with:)
仅适用于单元格动画,应包含begin
/ endUpdates()
。
class ViewController: UITableViewDataSource {
@IBAction func ReplyAction(_ sender: UIButton) {
// ...
CommentFeed.beginUpdates()
CommentFeed.insertRows(at: [IndexPath(row: CommentGlobals.shared.commentSection.count - 1, section: 0)], with: .automatic)
CommentFeed.endUpdates()
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return CommentGlobals.shared.commentSection.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "commentFeed", for: indexPath)
cell.textLabel?.text = CommentGlobals.shared.commentSection[indexPath.row]
return cell
}
}
编辑:请注意,您的数据集的行数和部分数必须与动画结束时的预期结果相匹配,否则在调用endUpdates()
时会出现异常。