基本上,我想将变量的值设置为导航控制器中显示的标题。该变量称为titleAmount
,应代表表视图中的行数。
为此,我创建了变量var titleAmount:String?
在numberOfRowsInSection
中,我添加了以下内容:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let theIntegerValue :Int = feedItems.count
let theStringValue :String = String(theIntegerValue)
titleAmount = theStringValue
return feedItems.count
}
因为标题必须是字符串,并且我的变量正在寻找字符串,所以我在上面添加了以下内容:
let theIntegerValue :Int = feedItems.count
let theStringValue :String = String(theIntegerValue)
要将feedItems.count
的值转换为字符串
^^这可能是问题所在^^
feedItems.count
在我的表视图中显示行数。 (我已经测试并确认它可以工作)
最后在viewDidLoad()
中,我添加了 self.navigationItem.title = titleAmount 来将变量的值设置为导航栏标题。
该字段未显示任何内容。有什么问题吗?
答案 0 :(得分:1)
您不应该尝试更新numberOfRowsInSection
中的标题。无论您在哪里填充标题,都要更新标题,也可以更新feedItems
。
在任何地方更新feedItems
中的项目数都需要更新标题:
self.navigationItem.title = "\(feedItems.count)"
请记住,即使您在self.navigationItem.title = titleAmount
中做了viewDidLoad
,对titleAmount
的任何进一步更改也不会反映在标题中。
答案 1 :(得分:1)
numberOfRowsInSection将在viewDidLoad之后执行。如果要在numberOfRowsInSection中设置titleAmount,则当您之前访问它时titleAmount将为零。
如果您可以观察feedItems并在其更改时更新标题,这应该可以解决您的问题。截至目前,我认为您遇到了运营订单问题。
答案 2 :(得分:0)
var feeditems: [FeedItem] = [FeedItem]() {
didSet {
self.navigationItem.title = "Available items: \(feedItems.count)"
reloadData()
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return feedItems.count
}
这是精简版,但对于您的用例应该很容易实现。确保feedItems设置正确。