如何设置整数值作为导航栏的标题?

时间:2019-05-08 18:20:50

标签: ios swift uitableview uinavigationbar

基本上,我想将变量的值设置为导航控制器中显示的标题。该变量称为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 来将变量的值设置为导航栏标题。

该字段未显示任何内容。有什么问题吗?

3 个答案:

答案 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设置正确。