gpt4 book ai didi

ios - 方法被调用,但未正确执行

转载 作者:行者123 更新时间:2023-11-30 12:06:09 25 4
gpt4 key购买 nike

我已成功从 CollectionViewController -> MenuTableViewController -> ListViewController 链接委托(delegate)方法。在 ListViewController 扩展中,我调用 changeTitleView() 但它不起作用。然而,数据已成功传递,因为 print(title) 正确打印了传递的信息。如果从 ListViewController 内部调用,changeTitle() 可以正确执行

class ListViewController { 
var navigationTitle: String?

@objc func changeTitle(title: String) {
let titleLabel = UILabel()
let attributes: NSDictionary = [
NSAttributedStringKey.font:UIFont(name: "HelveticaNeue", size: 20)!,
NSAttributedStringKey.foregroundColor: UIColor(red: 0.1137, green: 0.1137, blue: 0.149, alpha: 0.8) /* #1d1d26 */,
NSAttributedStringKey.kern:CGFloat(2.0)
]

let attributedTitle = NSAttributedString(string:
title.uppercased(), attributes: attributes as? [NSAttributedStringKey : AnyObject])
titleLabel.attributedText = attributedTitle
titleLabel.sizeToFit()
self.navigationItem.titleView = titleLabel
}
}

extension ListViewController: HandleTitleView {
@objc func changeTitleView(title: String) {
print(title)
self.navigationTitle = title

changeTitle(title: navigationTitle!)
}

其他信息:

1) 我通过 SWRevealController 传递信息,因此并非所有数据都位于同一导航堆栈中。 ListViewController 位于 MenuTableViewController 之上,CollectionViewControllerMenuTableViewController 实例化,然后被关闭

2) 我在 ListViewController 中创建了一个调用 changeTitle() 的按钮,它成功更改了 navigationItem.titleView 所以我知道该方法有效。

提前致谢

最佳答案

你有没有像下面这样尝试

class ListViewController { 
var navigationTitle: String? {
didSet{
if(navigationTitle != nil) {
changeTitle(title: navigationTitle!)
}
}
}
@objc func changeTitle(title: String) {
let titleLabel = UILabel()
let attributes: NSDictionary = [ NSAttributedStringKey.font:UIFont(name: "HelveticaNeue", size: 20)!, NSAttributedStringKey.foregroundColor: UIColor(red: 0.1137, green: 0.1137, blue: 0.149, alpha: 0.8) /* #1d1d26 */, NSAttributedStringKey.kern:CGFloat(2.0) ]
let attributedTitle = NSAttributedString(string: title.uppercased(), attributes: attributes as? [NSAttributedStringKey : AnyObject])
titleLabel.attributedText = attributedTitle titleLabel.sizeToFit()
self.navigationItem.titleView = titleLabel
}
}
extension ListViewController: HandleTitleView {
@objc func changeTitleView(title: String) {
print(title)
self.navigationTitle = title
// changeTitle(title: navigationTitle!)
}`

关于ios - 方法被调用,但未正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com