带有 UIToolbar 错误的 UIDatePicker

Posted

技术标签:

【中文标题】带有 UIToolbar 错误的 UIDatePicker【英文标题】:UIDatePicker with UIToolbar error 【发布时间】:2018-08-05 17:23:32 【问题描述】:

我正在使用 UIDatePicker 并在单击 UITextField 时实现 UIToolBar。但是当我单击文本字段时,它会崩溃。我正在使用以下代码。

datepicker = [[UIDatePicker alloc] initWithFrame:CGRectZero]; 
[datepicker setDatePickerMode:UIDatePickerModeDate]; 
[datepicker addTarget:self action:@selector(changeDate:) forControlEvents:UIControlEventValueChanged];

UIToolbar *toolbar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,44)]; 
toolbar.barStyle = UIBarStyleDefault; 
UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismiss)];

[toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]];

[datepicker addSubview:toolbar];

textField.inputAccessoryView = toolbar;

textField.inputView = datepicker;

由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'请在 如果您看到此断言,则 UIKit 会显示此日志。选择器字符串 = setTitle:,executedImplementations = “设置标题:” = ( ); '

提前致谢。

【问题讨论】:

您是否尝试过在 Xcode 中设置 Objective-C 异常 断点以查看究竟是哪一行导致了错误? 另外,这段代码是在主线程(线程0)上运行的,对吧? 是的,没错。你有什么解决办法吗? 你能提供更多的背景信息吗?上面的代码在哪里调用? 我在 Viewdidload 中调用了上面的代码。但不工作。请给我建议。谢谢 【参考方案1】:

UITextFields inputAccessoryView 设置为已经有超级视图的视图会导致崩溃。

所以,不要将工具栏添加为UIDatePicker 的子视图。删除

[datepicker addSubview:toolbar];

然后设置

textField.inputAccessoryView = toolbar; 

工具栏将出现在数据选择器上方。

【讨论】:

以上是关于带有 UIToolbar 错误的 UIDatePicker的主要内容,如果未能解决你的问题,请参考以下文章

带有 UITableView 的 UIToolBar - 加载时 TableView 不刷新

带有 UIToolbar 的 UIDatePicker

带有 UIToolBar 的 UITableView

将带有两个 UIBarButtonItem 的 UIToolbar 添加到 UINavigationBar:糟糕的 UIToolbar 以及 iPhone 4 怎么样

使用键盘使带有 TextField 的 UIToolbar 向上移动

是否可以隐藏带有动画的 UIToolbar?