Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iDatePicker未在iOS 8.1的iPad上显示月日(dd)的控制盘_Ios_Ipad_Date_Datepicker_Uidatepicker - Fatal编程技术网

iDatePicker未在iOS 8.1的iPad上显示月日(dd)的控制盘

iDatePicker未在iOS 8.1的iPad上显示月日(dd)的控制盘,ios,ipad,date,datepicker,uidatepicker,Ios,Ipad,Date,Datepicker,Uidatepicker,我在带有静态单元格的TableView中有一个UIDatePicker。DatePicker在iPhone版本的应用程序中工作得很好,但iPad似乎压缩了DatePicker,因此保存月份(dd)的中间列不会显示出来。请注意,“十一月”中的“er”被截断 我通过将日期样式更改为西班牙语(dd-MMMM-YYY)来验证这一点,并且日期显示与上半月和全年一样。每个月名称的后半部分被截断 有人在移植到iOS 8时遇到过这样的问题吗 永远不知道要发布多少代码。以下是相关课程中的大部分内容 @proper

我在带有静态单元格的TableView中有一个UIDatePicker。DatePicker在iPhone版本的应用程序中工作得很好,但iPad似乎压缩了DatePicker,因此保存月份(dd)的中间列不会显示出来。请注意,“十一月”中的“er”被截断

我通过将日期样式更改为西班牙语(dd-MMMM-YYY)来验证这一点,并且日期显示与上半月和全年一样。每个月名称的后半部分被截断

有人在移植到iOS 8时遇到过这样的问题吗

永远不知道要发布多少代码。以下是相关课程中的大部分内容

@property (strong, nonatomic) IBOutlet UITableViewCell *dateDisplay;
@property (strong, nonatomic) IBOutlet UITableViewCell *datePickerCell;
@property (strong, nonatomic) IBOutlet UIDatePicker *datePicker;

@property (strong, nonatomic) IBOutlet UITableViewCell *unattached;
@property (strong, nonatomic) IBOutlet UITableViewCell *middleschool;
@property (strong, nonatomic) IBOutlet UITableViewCell *highschool;
@property (strong, nonatomic) IBOutlet UITableViewCell *collegiate;
@property (strong, nonatomic) IBOutlet UITableViewCell *youthclub;

@end

@implementation MeetFinderTableViewController

@synthesize divisions = _divisions;
@synthesize datePickerIndexPath = _datePickerIndexPath;
@synthesize meetDate = _meetDate;

@synthesize doSaveUserDefaults = _doSaveUserDefaults;
@synthesize divisionSelected = _divisionSelected;
@synthesize arrayOfReuseIds = _arrayOfReuseIds;
@synthesize myTV = _myTV;

# pragma SplitViewController Variables

@synthesize meetIDForSegue = _meetIDForSegue;
@synthesize meetNameForSegue = _meetNameForSegue;


#pragma SetUp Configuration

-(void) setArrayOfReuseIds:(NSArray *)arrayOfReuseIds
{
    _arrayOfReuseIds = arrayOfReuseIds;
}

-(void) setMyTV:(UITableView *)myTV
{
    _myTV = myTV;
}

-(void) setMeetDate:(NSDate *)meetDate
{
    if(_meetDate != meetDate){
        _meetDate = meetDate;
        [self setDoSaveUserDefaults:YES];
    }
}

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (MapViewController *)splitViewMapViewController
{
    id mvc = [self.splitViewController.viewControllers lastObject];
    if (![mvc isKindOfClass:[MapViewController class]]) {
        mvc = nil;
    }
    if (debug==1) NSLog(@"%@ = %@",NSStringFromSelector(_cmd), mvc);
    return mvc;
}


- (void)awakeFromNib
{
    [super awakeFromNib];
    self.splitViewController.delegate = self;
    if (debug==1) NSLog(@"Do I make it to %@",NSStringFromSelector(_cmd));
}


- (void)viewDidLoad
{
    [super viewDidLoad];

    self.clearsSelectionOnViewWillAppear = YES;

    self.datePicker.hidden = YES;
    self.datePickerIsShowing = NO;

    [self setArrayOfReuseIds:[[NSArray alloc] initWithObjects:
      @"unattached",@"middleschool",@"highschool",@"collegiate",@"youthclub", nil]];

    [self setDivisions:[[NSArray alloc] initWithObjects:
                            @"Unattached", @"Middle School", @"High School",
                            @"Collegiate", @"Youth Club", nil]];

    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"divisionPreference"]) {
        [self setDivisionSelected:[[NSUserDefaults standardUserDefaults] objectForKey:@"divisionPreference"]];
    } else [self setDivisionSelected:[NSNumber numberWithInt:highSchoolTag]];

    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"datePreferenceForMeetSearch"]) {
        [self setMeetDate:[[NSUserDefaults standardUserDefaults] objectForKey:@"datePreferenceForMeetSearch"]];
    } else [self setMeetDate:[NSDate date]];

    [self setMyTV:self.tableView];

    if (debug==1) NSLog(@"In %@ before check splitViewMapViewController",NSStringFromSelector(_cmd));

    if ([self splitViewMapViewController]) {                      // if in split view
        [self splitViewMapViewController].dateForSearch = self.meetDate;
        [self splitViewMapViewController].levelOfCompetition = [self.divisionSelected stringValue];
    }
    }

-(void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self setupDateLabel];
    [self setUpMenuItems];

    if (debug==1) NSLog(@"Do I make it to %@",NSStringFromSelector(_cmd));

}

-(void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:YES];

    if (self.doSaveUserDefaults) {

        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

        [userDefaults setObject:self.divisionSelected
                         forKey:@"divisionPreference"];
        [userDefaults setObject:self.meetDate
                         forKey:@"datePreferenceForMeetSearch"];

        [userDefaults synchronize];

        NSLog(@"Getting ready to set newPreferences with divisionSelected: %@ and dateOfMeet: %@", [self.divisionSelected stringValue], self.meetDate);

        MapPreferencesDataDelegate *newPreferences = [[MapPreferencesDataDelegate alloc]
                                                      initWithName:[self.divisionSelected stringValue]
                                                      dateOfMeet:self.meetDate];

        [self.delegate saveMeetSearchPreferences:newPreferences];
    }
}


- (void)setupDateLabel {

    self.dateFormatter = [[NSDateFormatter alloc] init];
    [self.dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    [self.dateFormatter setTimeStyle:NSDateFormatterNoStyle];
    NSDate *defaultDate;
    if (!self.meetDate || self.meetDate == nil) {
        defaultDate = [NSDate date];
        [self setMeetDate:defaultDate];

    } else defaultDate = self.meetDate;

    self.dateDisplay.textLabel.text = [NSString stringWithFormat:@"%@",stringForDateDisplay];
    self.dateDisplay.textLabel.textColor = [self.tableView tintColor];

    self.dateDisplay.detailTextLabel.text = [self.dateFormatter stringFromDate:defaultDate];
    self.dateDisplay.detailTextLabel.textColor = [self.tableView tintColor];
}

- (void)showDatePickerCell {

    self.datePickerIsShowing = YES;
    [self.tableView beginUpdates];

    [self.tableView endUpdates];

    self.datePicker.hidden = NO;
    self.datePicker.alpha = 0.0f;

    [UIView animateWithDuration:0.25 animations:^{

        self.datePicker.alpha = 1.0f;

    }];
}

- (void)hideDatePickerCell {

    self.datePickerIsShowing = NO;

    [self.tableView beginUpdates];
    [self.tableView endUpdates];

    [UIView animateWithDuration:0.25
                     animations:^{
                         self.datePicker.alpha = 0.0f;
                     }
                     completion:^(BOOL finished){
                         self.datePicker.hidden = YES;
                     }];
}

-(void) placeCheckMarkForDivisionSelection:(NSInteger) myDivisionPreference

#pragma mark - Table view data source

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    switch (indexPath.section) {
        case 0:
        {
            if (indexPath.row == 0){
                self.datePicker.hidden = NO;
                self.datePickerIsShowing = !self.datePickerIsShowing;
                [UIView animateWithDuration:.4 animations:^{
                    [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:1 inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
                    [self.tableView reloadData];
                }];
            }
            break;
        }
        case 1:
        {
            UITableViewCell *cell1 = [tableView cellForRowAtIndexPath:indexPath];
            NSInteger tagForSelectedDivision = cell1.tag;

            [self placeCheckMarkForDivisionSelection:tagForSelectedDivision];
//
            [self setDivisionSelected:[NSNumber numberWithInteger:tagForSelectedDivision]];
            if ([self splitViewMapViewController]) [self splitViewMapViewController].levelOfCompetition = [self.divisionSelected stringValue];

            break;
        }
    }
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0 && indexPath.row == 1) { // this is my picker cell
        if (self.datePickerIsShowing) {
            return 219;
        } else {
            return 0;
        }
    } else {
        return self.tableView.rowHeight;
    }
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return numberOfSections;
}


#pragma mark - Action methods

- (IBAction)pickerDateChanged:(UIDatePicker *)sender {

    if ([self splitViewMapViewController]) {                      // if in split view
        [self splitViewMapViewController].dateForSearch = sender.date;
        [self splitViewMapViewController].levelOfCompetition = [self.divisionSelected stringValue];

    }
    self.dateDisplay.detailTextLabel.text =  [self.dateFormatter stringFromDate:sender.date];
    self.meetDate = sender.date;
    [self setMeetDate:sender.date];
}


- (void) displayAlertBoxWithTitle:(NSString*)title message:(NSString*) myMessage cancelButton:(NSString*) cancelText
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                    message:myMessage
                                                   delegate:nil
                                          cancelButtonTitle:cancelText
                                          otherButtonTitles:nil];
    [alert show];
}

#pragma SplitViewController Implementation


- (id <SplitViewBarButtonItemPresenter>)splitViewBarButtonItemPresenter
{
    id detailVC = [self.splitViewController.viewControllers lastObject];
    if (![detailVC conformsToProtocol:@protocol(SplitViewBarButtonItemPresenter)]) {
        detailVC = nil;
    }
    return detailVC;
}

- (BOOL)splitViewController:(UISplitViewController *)svc
   shouldHideViewController:(UIViewController *)vc
              inOrientation:(UIInterfaceOrientation)orientation
{
    return NO;
}

- (void)splitViewController:(UISplitViewController *)svc
     willHideViewController:(UIViewController *)aViewController
          withBarButtonItem:(UIBarButtonItem *)barButtonItem
       forPopoverController:(UIPopoverController *)pc
{
    barButtonItem.title = barButtonItemTitle;
    [self splitViewBarButtonItemPresenter].splitViewBarButtonItem = barButtonItem;
}

- (void)splitViewController:(UISplitViewController *)svc
     willShowViewController:(UIViewController *)aViewController
  invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    [self splitViewBarButtonItemPresenter].splitViewBarButtonItem = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}


@end
@property(强,非原子)IBOutlet UITableViewCell*日期显示;
@属性(强,非原子)IBUITableViewCell*datePickerCell;
@属性(强,非原子)IBUIDatePicker*datePicker;
@属性(强,非原子)IBUITableViewCell*未附加;
@属性(强、非原子)IBUITableViewCell*中学;
@属性(强、非原子)IBUITableViewCell*高中;
@属性(强、非原子)IBUITableViewCell*学院式;
@属性(强,非原子)IBUITableViewCell*youthclub;
@结束
@实现MeetFinderTableViewController
@综合分部=_分部;
@合成datePickerIndexPath=\u datePickerIndexPath;
@合成meetDate=_meetDate;
@合成doSaveUserDefaults=_doSaveUserDefaults;
@综合分区选定=_分区选定;
@合成arrayOfReuseIds=_arrayOfReuseIds;
@合成myTV=\u myTV;
#pragma SplitViewController变量
@合成meetIDForSegue=_meetIDForSegue;
@合成meetNameForSegue=_meetNameForSegue;
#pragma设置配置
-(无效)setArrayOfReuseIds:(NSArray*)arrayOfReuseIds
{
_arrayOfReuseIds=arrayOfReuseIds;
}
-(无效)设置myTV:(UITableView*)myTV
{
_myTV=myTV;
}
-(无效)会议日期:(NSDate*)会议日期
{
如果(_meetDate!=meetDate){
_meetDate=meetDate;
[self-setDoSaveUserDefaults:是];
}
}
-(id)initWithStyle:(UITableViewStyle)样式
{
self=[super initWithStyle:style];
如果(自我){
//自定义初始化
}
回归自我;
}
-(MapViewController*)拆分视图MapViewController
{
id mvc=[self.splitViewController.viewControllers lastObject];
如果(![mvc isKindOfClass:[MapViewController类]]){
mvc=零;
}
如果(调试==1)NSLog(@“%@=%@”、NSStringFromSelector(_cmd)、mvc;
返回mvc;
}
-(无效)从NIB中唤醒
{
[超级awakeFromNib];
self.splitViewController.delegate=self;
如果(debug==1)NSLog(@“我是否将其设置为%@”),则NSStringFromSelector(_cmd));
}
-(无效)viewDidLoad
{
[超级视图下载];
self.clearselectiononviewwillappear=YES;
self.datePicker.hidden=是;
self.datePickerIsShowing=否;
[self-SetArrayOfRuseId:[[NSArray alloc]initWithObjects:
@“未婚”、“中学”、“高中”、“学院”、“青年俱乐部”,无];
[self-setDivisions:[[NSArray alloc]initWithObjects:
@“单身”、“中学”、“高中”,
@“学院”、“青年俱乐部”,无];
if([[NSUserDefaults standardUserDefaults]objectForKey:@“divisionPreference”]){
[self-setDivisionSelected:[[NSUserDefaults standardUserDefaults]objectForKey:@“divisionPreference”];
}else[self setDivisionSelected:[NSNumber numberWithInt:highSchoolTag]];
if([[NSUserDefaults standardUserDefaults]objectForKey:@“datePreferenceForMeetSearch”]){
[self-setMeetDate:[[NSUserDefaults standardUserDefaults]objectForKey:@“datePreferenceForMeetSearch”];
}else[self-setMeetDate:[NSDate]];
[self-setMyTV:self.tableView];
如果(debug==1)NSLog(@“In%@在检查splitViewMapViewController之前)”,则NSStringFromSelector(_cmd));
if([self-splitviewmappviewcontroller]){//if在拆分视图中
[self splitViewMapViewController].dateForSearch=self.meetDate;
[self splitViewMapViewController]。竞争级别=[self.Value];
}
}
-(无效)视图将显示:(BOOL)动画
{
[超级视图将显示:动画];
[自设置日期标签];
[自设置菜单项];
如果(debug==1)NSLog(@“我是否将其设置为%@”),则NSStringFromSelector(_cmd));
}
-(无效)视图将消失:(BOOL)已设置动画
{
[超级视图将消失:是];
if(self.doSaveUserDefaults){
NSUserDefaults*userDefaults=[NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.Selected
福基:@“优先选择”];
[userDefaults setObject:self.meetDate
forKey:@“datePreferenceForMeetSearch”];
[用户默认同步];
NSLog(@“准备使用选定的分区设置新首选项:%@和会议日期:%@,[self.divisionSelected stringValue],self.meetDate”);
MapPreferencesDataDelegate*newPreferences=[[MapPreferencesDataDelegate alloc]
initWithName:[self.selected stringValue]
会议日期:self.meetDate];
[self.delegate saveMeetSearchPreferences:newPreferences];
}
}
-(无效)setupDateLabel{
self.dateFormatter=[[NSDateFormatter alloc]init];
[self.dateFormatter setDateStyle:nsDateFormatTermeLiumStyle];
[self.dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSDate*默认日期;
如果(!self.meetDate | self.meetDate==nil){
defaultDate=[NSDate日期];
[自我设置会议日期:默认日期];
}else defaultDate=self.meetDate;
self.dateDisplay.textLabel.text=[NSString stringWithFormat:@“%@”,stringForDateDisplay];
self.dateDisplay.textlab.textColor=[self.tableView tintColor];
self.dateDisplay.detailTextLabel.text=[self.dateFormatter stringFromDate:默认值
//@extern
- (void) showAddEditModeUI {
    [self fadeInView:self.editMembershipView];

  //WORKAROUND - ios8 issue was cutting off the date picker in the middle
  //the solution in this stack overflow didn't work for me:
  //https://stackoverflow.com/questions/26352797/uidatepicker-not-displaying-wheel-for-day-of-the-month-dd-on-ipad-for-ios-8-1
  //but this did work
  UIDatePicker* dPicker = [[UIDatePicker alloc] initWithFrame:self.startDatePicker.frame];
  dPicker.date = self.startDatePicker.date;
  dPicker.datePickerMode = self.startDatePicker.datePickerMode;
  [self.startDatePicker removeFromSuperview];
  self.startDatePicker = dPicker;
  [self.editMembershipView addSubview:self.startDatePicker];

}
[myDatePicker setDatePickerMode:UIDatePickerModeDateAndTime];
[myDatePicker setDatePickerMode:UIDatePickerModeDate];
    [self.tableView setNeedsLayout];

    [self.tableView layoutIfNeeded];
if (@available(iOS 14, *)) {
UIDatePicker *picker = [UIDatePicker appearance];
picker.preferredDatePickerStyle = UIDatePickerStyleWheels;
}
<DatePicker
customStyles={{
datePicker: {
backgroundColor: '#d1d3d8',
justifyContent:'center'
}
}}
...
/>