按下按钮时未从数组中填充 UILabel

Posted

技术标签:

【中文标题】按下按钮时未从数组中填充 UILabel【英文标题】:UILabel Not Populated From Array When Button Pressed 【发布时间】:2015-01-25 15:36:14 【问题描述】:

我有一个UITableViewController 和自定义UITableViewCells,其中包含一个UILabel 和一个UIButton。 问题是最初设置为 0 的 UILabel 在按下按钮时不会改变,这会改变其在数组中的特定值。当我使用println() 时,实际数组已更改,但UILabel 没有。

以下是我UITableViewController的代码:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let groupChatCell = tableView.dequeueReusableCellWithIdentifier("groupChatCell", forIndexPath: indexPath) as textCell

    groupChatCell.voteScoreLabel.text="\(groupVote[indexPath.row])"
    groupChatCell.voteScoreLabel.tag=indexPath.row

    return groupChatCell

voteScoreLabel 是我想从数组中更新的UILabelgroupVotearray,用于用分数填充标签。我将UILabel 标记设置为等于它的索引路径,这样当我需要选择数组的特定值时就可以引用它。

以下来自我的自定义UITableViewCellController

@IBAction func upVoteButtonPressed(sender: AnyObject) 
    groupVote[voteScoreLabel.tag]=groupVote[voteScoreLabel.tag]+1

我在这里做错了什么,以便当 UILabel 在数组中的对应值发生变化时进行更改。

【问题讨论】:

打电话instance_of_your_tableView.reloadData()了吗? @ko100v.d 我确实在viewWillApear 方法中尝试过。 @IBAction func upVoteButtonPressed(sender: AnyObject) groupVote[voteScoreLabel.tag]=groupVote[voteScoreLabel.tag]+1 // reload your tableView data here after you click on a certen button @ko100v.d 好的。如果你想给出一个答案,我会接受这对未来的观众来说会很棒。谢谢 已经完成了,谢谢你的建议,我是新来的:) 【参考方案1】:

单击按钮时,您需要重新加载 tableView 数据。 reloadData() 函数再次调用每个 tableView 委托/数据源方法,如果它的 UITableViewController 或整个 tableView 如果它的视图添加到另一个控制器,则重新加载整个控制器

您的代码应如下所示:

@IBAction func upVoteButtonPressed(sender: AnyObject) 
   groupVote[voteScoreLabel.tag]=groupVote[voteScoreLabel.tag]+1
   instance_of_your_tableView.reloadData()
   // If this is the name of method in swift //

问候

【讨论】:

我实际上不得不使用NSNotificationCenter,因为当我做实例方式时,我得到了实例不包含名为reloadData()的成员的错误。很抱歉造成混乱。 如果你使用 UITableViewController 你应该使用self.reloadData :) IBAction 位于不同的 ViewController 中。 哦,我的错误,您找到解决方案了吗,还是我应该写另一个答案? :) 您可以使用 NSNotification 中心编写解决方案。否则,我会的。

以上是关于按下按钮时未从数组中填充 UILabel的主要内容,如果未能解决你的问题,请参考以下文章

表未从对象数组中正确填充

未从 LocalNotification.fireDate 收到通知

在类中初始化时未从设置中加载集合

调用 Selector 方法时未从 Superview 中删除视图

按下后退按钮时未调用Android onUserLeaveHint()

使用 Workbench 从 MSSQL 迁移到 MySQL 时未从源中检索模式列表