带有 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】:将UITextField
s inputAccessoryView
设置为已经有超级视图的视图会导致崩溃。
所以,不要将工具栏添加为UIDatePicker
的子视图。删除
[datepicker addSubview:toolbar];
然后设置
textField.inputAccessoryView = toolbar;
工具栏将出现在数据选择器上方。
【讨论】:
以上是关于带有 UIToolbar 错误的 UIDatePicker的主要内容,如果未能解决你的问题,请参考以下文章
带有 UITableView 的 UIToolBar - 加载时 TableView 不刷新
将带有两个 UIBarButtonItem 的 UIToolbar 添加到 UINavigationBar:糟糕的 UIToolbar 以及 iPhone 4 怎么样