按下按钮时未从数组中填充 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
是我想从数组中更新的UILabel
。
groupVote
是 array
,用于用分数填充标签。我将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 中删除视图