optional value can't use titleBar.topItem?.title? Fatal Error, fatal error: unexpectedly found nil while unwrapping an Optional value
optional value can't use titleBar.topItem?.title? Fatal Error, fatal error: unexpectedly found nil while unwrapping an Optional value
我想设置标题,所以我使用了:titleBar.topItem?.title = user!.name,其中titleBar是一个navigationBar。
@IBOutlet weak var titleBar: UINavigationBar!
但它一直给我致命错误;这是我的代码:当我打印 (user!.name) 时,它会给我可选的 ("why"),其中 "why" 是 user!.name 的值。
var user:User! {
didSet{
// titleBar.topItem?.title = user!.name
print("hhh")
print("this is the name:",user!.name)
print("hello")
print("why???")
}
}
即使我尝试在不同的函数中使用 user.name 但在同一个视图控制器文件中,它仍然会给我 nil。
print("sent to person: ", self.user?.name)
有人可以帮我解决这个问题吗?
您需要先初始化 titleBar
,然后才能修改它的内容。由于这是 Storyboard 参考,viewDidLoad
尚未命中。此 @IBOutlet
尚未初始化。
你会想要尝试从 IBOutlet 故事板参考过渡并使用程序化的 AutoLayout(我在下面添加了一个可能看起来像的示例),或者尝试在 didSet
中初始化另一个变量并将其分配给 titleBar
。但是在 viewDidLoad
上,这很可能会被覆盖。
// init titlebar
let titleBar: UINavigationBar = {
var navigationBar = UINavigationBar()
navigationBar.translatesAutoresizingMaskIntoConstraints = false
return navigationBar
}()
在此之后,您只需将其添加到您的视图中,并通过 NSLayoutConstraint.activate()
激活约束。希望对您有所帮助。
我想设置标题,所以我使用了:titleBar.topItem?.title = user!.name,其中titleBar是一个navigationBar。
@IBOutlet weak var titleBar: UINavigationBar!
但它一直给我致命错误;这是我的代码:当我打印 (user!.name) 时,它会给我可选的 ("why"),其中 "why" 是 user!.name 的值。
var user:User! {
didSet{
// titleBar.topItem?.title = user!.name
print("hhh")
print("this is the name:",user!.name)
print("hello")
print("why???")
}
}
即使我尝试在不同的函数中使用 user.name 但在同一个视图控制器文件中,它仍然会给我 nil。
print("sent to person: ", self.user?.name)
有人可以帮我解决这个问题吗?
您需要先初始化 titleBar
,然后才能修改它的内容。由于这是 Storyboard 参考,viewDidLoad
尚未命中。此 @IBOutlet
尚未初始化。
你会想要尝试从 IBOutlet 故事板参考过渡并使用程序化的 AutoLayout(我在下面添加了一个可能看起来像的示例),或者尝试在 didSet
中初始化另一个变量并将其分配给 titleBar
。但是在 viewDidLoad
上,这很可能会被覆盖。
// init titlebar
let titleBar: UINavigationBar = {
var navigationBar = UINavigationBar()
navigationBar.translatesAutoresizingMaskIntoConstraints = false
return navigationBar
}()
在此之后,您只需将其添加到您的视图中,并通过 NSLayoutConstraint.activate()
激活约束。希望对您有所帮助。