ios - UINavigationBar 中的 UITextField

标签 ios uitextfield uinavigationbar autolayout

我正在尝试使用以下代码将 UITextField 添加到 UINavigationBar 的右侧:

UITextField *txtField=[[UITextField alloc]init];
txtField.text=@"Text Goes Here";


txtField.translatesAutoresizingMaskIntoConstraints=NO;
[self.navigationController.navigationBar addSubview:txtField];



NSArray * constraints=[NSLayoutConstraint constraintsWithVisualFormat:@"H:[txtField(100)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(txtField)];

[self.navigationController.navigationBar addConstraints:constraints];

碰巧程序崩溃了

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UINavigationBar's implementation of -layoutSubviews needs to call super.'

我不明白为什么...... 这样做的正确方法是什么?

最佳答案

尝试将文本字段添加为具有自定义 View 的 UIBarButtonItem ,并将其设置为 navigationItem.rightBarButtonItem:

UITextField *txtField = [[UITextField alloc]init];
txtField.text = @"Text Goes Here";
txtField.translatesAutoresizingMaskIntoConstraints = NO;

UIBarButtonItem *rightBarButtonItem = [UIBarButtonItem alloc] initWithCustomView:txtField];

self.navigationController.navigationItem.rightBarButtonItem = rightBarButtonItem;

关于ios - UINavigationBar 中的 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20272878/

相关文章:

ios - 使用方法减少代码

swift - 如何启用/禁用警报操作?

iphone - CGContextClip空路径错误(自定义UINavigationBar背景)

ios - 将导航栏发送到后面,将我的侧边菜单发送到前面

ios - 如何切换 UITableViewContoller/UITableViewCell 中的选定行

ios - 为什么我的 Cordova WebView 有额外的 20px 滚动?

ios - 为什么 UITextfield.text 从数组中检索时返回精确的 float ?

iphone - 避免 UITextField 中的中间空白

ios - 如何更改 UISplitViewController iOS 8 的状态栏(样式/颜色)

ios - textfield becomeFirstResponder 给出 EXC_BAD_ACCESS 代码