react-native-date-picker
react-native-date-picker copied to clipboard
[iOS v16.x.x] Fatal Exception: NSInternalInconsistencyException - UITableView dataSource is not set | "UIDatePickerStyleWheels" date picker api crashed
Describe the bug
- App Crashes when the component gets rendered DatePickerIOS on IOS 16 Devices and Simulator
Expected behavior
- DatePickerIOS should render as expected on all iOS versions
To Reproduce
export default class App extends Component {
state = { date: new Date() }
render = () =>
<DatePicker
date={this.state.date}
onDateChange={date => this.setState({ date })}
mode={"date"}
locale={'en'}
style={{
width: Dimensions.get('window').width,
height: Dimensions.get('window').height / 3,
backgroundColor: '#FFF',
}}
textColor={'#000000'}
/>
}
Smartphone (please complete the following information):
- OS: iOS v16.x.x only
- React Native version [0.72.1]
- react-native-date-picker version [5.0.0]
Workaround
- If you are using RN > 0.72 and later
- Check if the date-picker crashes or not. If crashed, try this workaround.
- Go to iOS folder > DatePicker.m > Replace setup function
-(void)setup {
if(@available(iOS 13, *)) {
self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
if (@available(iOS 13, *)) {
self.preferredDatePickerStyle = UIDatePickerStyleInline; // it will use "Calendar" style date picker for iOS v13 to v16
}
if (@available(iOS 17, *)) {
self.preferredDatePickerStyle = UIDatePickerStyleWheels; // // it will use traditional (rolling wheels) style date picker for iOS v17 and later
}
self.calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
}
@henninghall Please try to reproduce this crash on your side. If issue persists, please update this library with an effective solution. Thanks!
I don't manage to reproduce this. Please provide a repo where this is reproduced, together with name simulator phone name + exact iOS version of the simulator. Thanks
I just had this happen in my EXPO app, on iOS. I was selecting the year, and when the spinner stopped, the app crashed.
All I can see in Sentry is NSInternalInconsistencyException: UITableView dataSource is not set
:
{
beingPresented: true,
is_window_rootViewController: false,
presentingViewController: UIViewController,
screen: RCTModalHostViewController,
window: <UIWindow: 0x10130b960; frame = (0 0; 375 812); autoresize = W+H; gestureRecognizers = <NSArray: 0x2809cbe70>; layer = <UIWindowLayer: 0x2809cb780>>,
window_isKeyWindow: true,
window_windowLevel: 0.000000
}
I've never reproduced it locally but it happened in release mode. Seems like it happens the first time you try to use it, then it doesn't happen again.