- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试为导航栏创建自定义 titleView。我能够在嵌入导航 Controller 的 Root View Controller 中设置 titleView。
当我将第二个 View Controller 插入堆栈并尝试为此 View Controller 设置 titleView 时,它不起作用。 titleView 快速出现和消失。当我回到上一个 View Controller 时,这个 titleView 现在也很快出现和消失。
有谁知道为什么会这样,或者如何正确设置 titleView 而不会闪烁和消失?
class FirstViewController: UIViewController {
var titleView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
addTitleView()
}
func addTitleView() {
titleView = UIView(frame: CGRect(x: 0, y: 0, width: 150, height: 44))
let companyLabel = UILabel(frame: CGRect(x: 0, y: 3, width: 150, height: 11))
companyLabel.text = "CPS Dashboard"
companyLabel.textColor = UIColor.grayColor()
companyLabel.textAlignment = .Center
companyLabel.font = UIFont.systemFontOfSize(9)
titleView.addSubview(companyLabel)
let titleLabel = UILabel(frame: CGRect(x: 0, y: 16, width: 150, height: 18))
titleLabel.text = "Dashboard"
titleLabel.textColor = UIColor.blackColor()
titleLabel.textAlignment = .Center
titleLabel.font = UIFont.systemFontOfSize(15)
titleView.addSubview(titleLabel)
navigationItem.titleView = titleView
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "Show" {
let controller = segue.destinationViewController as! SecondViewController
controller.titleView = titleView
}
}
}
第二个 View Controller :
class SecondViewController: UIViewController {
var titleView: UIView?
override func viewDidLoad() {
super.viewDidLoad()
if let titleView = titleView {
navigationItem.titleView = titleView
}
}
}
最佳答案
我找到了一个解决方案。我将 addTitleView() 方法从 FirstViewController 复制到 SecondViewController 中,并在 viewDidLoad() 中调用了它们。这完全符合我的要求。出于某种原因,无法将 titleView 作为属性转发并将其分配给 navigationItem.titleView。
class FirstViewController: UIViewController {
var titleView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
addTitleView()
}
func addTitleView() {
titleView = UIView(frame: CGRect(x: 0, y: 0, width: 150, height: 44))
let companyLabel = UILabel(frame: CGRect(x: 0, y: 3, width: 150, height: 11))
companyLabel.text = "CPS Dashboard"
companyLabel.textColor = UIColor.grayColor()
companyLabel.textAlignment = .Center
companyLabel.font = UIFont.systemFontOfSize(9)
titleView.addSubview(companyLabel)
let titleLabel = UILabel(frame: CGRect(x: 0, y: 16, width: 150, height: 18))
titleLabel.text = "Dashboard"
titleLabel.textColor = UIColor.blackColor()
titleLabel.textAlignment = .Center
titleLabel.font = UIFont.systemFontOfSize(15)
titleView.addSubview(titleLabel)
navigationItem.titleView = titleView
}
}
第二个 View Controller :
class SecondViewController: UIViewController {
var titleView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
addTitleView()
}
func addTitleView() {
titleView = UIView(frame: CGRect(x: 0, y: 0, width: 150, height: 44))
let companyLabel = UILabel(frame: CGRect(x: 0, y: 3, width: 150, height: 11))
companyLabel.text = "CPS Dashboard"
companyLabel.textColor = UIColor.grayColor()
companyLabel.textAlignment = .Center
companyLabel.font = UIFont.systemFontOfSize(9)
titleView.addSubview(companyLabel)
let titleLabel = UILabel(frame: CGRect(x: 0, y: 16, width: 150, height: 18))
titleLabel.text = "Dashboard"
titleLabel.textColor = UIColor.blackColor()
titleLabel.textAlignment = .Center
titleLabel.font = UIFont.systemFontOfSize(15)
titleView.addSubview(titleLabel)
navigationItem.titleView = titleView
}
}
关于ios - UINavigationItem TitleView 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861952/
在我的 UINavigationController 中,我推送三个 UITableViewController。在我的第二个 UITableViewController 中,我在 viewDidLo
我有一个 navigationItem 的子类,因为我想更改导航标题标签的文本、字体、颜色等。 我的 customNavigationItem.h 有以下内容: @interface CustomNa
我被难住了。我正在使用 UINavigationController,在一个 View 上我试图隐藏后退按钮。但是当我这样做时,它也会隐藏下一级 View 上的后退按钮。 在 - (void)view
我想用一个 navItem.rightBarButtonItem 加载 View Controller ,并根据一组情况将其更改为另一个。似乎我只能在 viewDidLoad 上加载它一次。更改图标后
我有一个 UINavigationItem(不是 UINavigationBar),我想使其透明或不透明。这是在我建立从导航 Controller 到我的 UIViewController 子类的关系
我创建了一个带有菜单结构的应用程序,并希望在初始化第一个 ViewController 之前拥有一个 DownloadViewController。 因此我在 DownloadViewControll
尝试修改 UINavigationItem 中的标题 // this modify the title self.navigationItem.title = @"Any title"; //
我正在尝试为 UINavigationItem 创建自定义动画。我有包含 4 个项目的导航栏,但是当我向下滚动时,我想将搜索栏放在导航中。我想要动画自下而上,但我尝试的一切都不起作用。 以下是我尝试过
我有一个自定义的 UITextField 添加到 UINavigationItem.titleView。但它不是becomeFirstResponder。为什么会这样? - (void) viewDi
我正在使用此代码在 UINavigationItem 中设置自定义图像: let button = UIButton(type: .system) button.frame = CGRect(orig
当我点击导航栏的标题时,有什么好方法可以让弹出窗口(特别是日期选择器)出现?我实际上使用的是 xcode6/swift,但假设 ios7 解决方案就足够了! 非常感谢! 最佳答案 您可以将按钮设置为标
谁能解释为什么有两个 navigationItems?当我像下面这样登录时: NSLog(@"%@", self.navigationItem); NSLog(@"%@", self.navigati
我找遍了,似乎无法弄清楚。我相信很多人都会有我的链接,我很可能已经看过了。但如果有人可以请给我看代码来执行以下操作: 我想在我的 UINavigationBar 中有一个左箭头作为“返回”UINavi
我遇到了一个问题,当我将项目推到导航 Controller 上时,后退按钮只显示“后退”。我尝试设置一个断点并检查堆栈上的导航项。堆栈中的所有项目都有一个 nil backButtonItem 和一个
我有两个字符串构建的文本:A(乙) 我想使用这两个字符串作为 UINavigationItem 的标题,但在截断的情况下,我只希望截断 A 而不是截断 B。 例子:我想要的标题是“The quick
我有一个 iPad 应用程序,在其中一个屏幕上我有一个 UIToolbar设置为 titleView的 viewController的 navigationItem .我还有一个 left-和一个 r
我正在使用基于 UIImageView 的动画来显示自定义事件指示器。以下代码负责设置: + (void)startLoadingActivity:(UIViewController *)vc {
我无法解决 UINavigationItem 上的提示问题... 我有一个主视图 Controller 和一个细节 View Controller 。当我从 master 推送到细节时,细节 View
我在 Xcode 5 的“默认导航 Controller ”中添加了几个 View Controller 。我想更改栏的颜色,但它不起作用。这是我使用的代码: [[UINavigationBar ap
如何在导航项中添加新按钮?假设我需要将其添加到右侧按钮附近。 用于左右的代码。 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem al
我是一名优秀的程序员,十分优秀!