简体   繁体   中英

iOS Navigation Bar Title set dinamically is making a ellipsis in text when view appears

I was trying to set the back button title in a navigation bar, like this

override func viewWillAppear(animated: Bool) {
  super.viewWillAppear(animated)
  self.title = self.backUpTitle
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    self.title = "Back"
}

Where self.backUpTitle has the original title for the current ViewController.

It works very well, but I'm a having a quick effect each time I click "Back": the title of the navigation bar appears with the first three letters followed by ellipsis (Eg: "Title" would show as "Tit..."), and after the view fully appears, it shows the entire title without any problem.

这是出现视图时发生的情况

这是视图已经出现时的样子

The thing is... it does not happen in a normal case, so I guess it has to do with my solution about setting Back Button Title.

The question is: is there a way to avoid this effect? Am I calling self.title in a wrong function?

I'm using Xcode 8 and iOS 10.0

I've tried running your code on my own machine and I'm not showing the same problem; I'm thinking you might be using custom views for the title of the navigation bar and your self.backUpTitle is inside a custom view that causes the ellipsis.

Some suggestions:

  1. If you just want to show “Create User” that way without the ellipsis, you might want to remove all custom views for your navigation bar and just set the ViewController title like what you are doing in your code.

  2. Using “self.title” will change the title of your ViewController, make sure your ViewController is embedded to a UIViewController. However, if you created your navigation bar, setting the title should be:

    navigationBar.topItem.title = “Create User”

  3. Just to reiterate, this is what my code looks like (which looks like yours) under a ViewController that is embedded in a UINavigationController:

     var backUpTitle: String! override func viewDidLoad() { backUpTitle = "Create User" } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.title = self.backUpTitle } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) self.title = "Back" } 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM