UINavigationBar的标题编辑?

问题描述 投票:11回答:7

我有一个基于UINavigationController的应用程序。我可以编程从我的视图控制器的viewDidLoad方法中设置的UINavigationBar的标题:

self.navigationItem.title = m_name;

我可以让这个导航栏标题为编辑? IE浏览器。我希望用户能够点击导航栏中的标题,并能够对其进行编辑。

这可能吗?如果可能的话,确实是它可能满足苹果的人机界面指南? (这篇文章表明,它会,但并没有告诉我如何实现它 - Make UINavigationBar title editable

非常感谢

弥敦道

objective-c ios uinavigationbar
7个回答
20
投票

您能为您的标题自定义视图。

titleview的

当接收器的顶部项目的定制视图显示在导航条的中心。

@属性(非原子,保留)的UIView * titleview的

讨论

如果此属性值是零,当接收器顶部的项目的导航项目的标题显示在导航栏的中心。如果将此属性设置为自定义标题,它显示,而不是标题。如果leftBarButtonItem不是零这个属性被忽略。

自定义视图可以包含按钮。使用buttonWithType:在UIButton的类方法的按钮添加到您的自定义视图导航栏的样式。自定义标题的意见都集中在导航栏上,并且可以调整大小以适应。

如果你要放在你的titleview的一个的UITextField,你可以给它一个clearColor背景,并将其设置有没有边界。瓦剌你有一个UINavigationBar的标题,你可以挖掘和编辑。


11
投票

瑞安的解决方案是完全正确的。如果有人有困难实现它,这里是一些示例代码,应该让你去。只需将其粘贴到viewDidLoad中与一个navigationController任何类。

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 22)];
textField.text = @"Insert Title Here";
textField.font = [UIFont boldSystemFontOfSize:19];
textField.textColor = [UIColor whiteColor];
textField.textAlignment = NSTextAlignmentCenter;
self.navigationItem.titleView = textField;

如果你的项目不使用ARC,确保释放文本框,如下所示:

UITextField *textField = [[[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 22)]autorelease];

或像这样:

[textField release];

希望帮助。


2
投票

瑞恩对迅速解决

let textField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 22))
textField.text = "Title"
textField.font = UIFont.systemFontOfSize(19)
textField.textColor = UIColor.whiteColor()
textField.textAlignment = .Center
self.navigationItem.titleView = textField

1
投票

这里是在Ciprian's code夫特4和为iOS 12校正:

let textField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 21))

textField.text          = "Your Title"
textField.font          = UIFont.systemFont(ofSize: 17, weight: .semibold)
textField.textAlignment = .center

self.navigationItem.titleView = textField

0
投票

你可以把一个文本框右侧顶部的导航栏,并设置隐藏/不启用,使用手势识别来检测在导航栏上的水龙头,将文本字段设置为启用/不隐藏。然后在文本框的真的结束编辑方法,将其设置为再次隐藏,并设置导航栏的标题的文本框的。


0
投票

添加一个文本框隐藏在导航栏,等拍打,它会弹出一个键盘和用户可以输入文本插入。

获得返回按钮的事件,在那里你可以与新添加的文字修改您的导航栏文本。并再次隐藏文本字段。

享受编码:)


0
投票

把导航栏的文本字段,并用不透明的文本框背景颜色设置为零。

© www.soinside.com 2019 - 2024. All rights reserved.