Ich habe einen UIDatePicker in einem TableView mit statischen Zellen. Der DatePicker funktioniert perfekt in der iPhone-Version der App, aber das iPad scheint den DatePicker so zu komprimieren, dass die mittlere Spalte, die den Tag des Monats (dd) enthält, nicht angezeigt wird. Beachten Sie, dass das "er" in "November" abgeschnitten ist.UIDatePicker zeigt kein Rad für den Tag des Monats (dd) auf dem iPad für iOS 8.1
Ich verifiziert dies, indem Sie den Datumsformat auf Spanisch (TT MMMM YYY) ändern und das Datum zeigt, wie die erste Hälfte des Monats und das ganze Jahr. Die letzte Hälfte des Monats wird abgeschnitten.
Hat jemand solch ein Problem bei der Portierung auf iOS 8 festgestellt?
Nie sicher, wie viel Code zu buchen ist. Hier ist fast alles in der entsprechenden Klasse
@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
Danke,
Nur versucht, die Benutzeroberfläche in einem SplitViewController mit dem gleichen Ergebnis zu implementieren. Ich habe herausgefunden, dass ich das Datum ändern kann, indem ich dort blicke, wo das Datum erscheinen soll. Ich kann es einfach nicht sehen. – PhillipOReilly
Ich habe das gleiche Storyboard für iPhone und iPad, aber ich bekomme es nur auf dem iPad – Jacobanks
Ich brauche wirklich eine Antwort auf diese, die Version, die ich auf dem App Store habe, ist die eine mit diesem Fehler und die Leute sind nicht sehr glücklich – Jacobanks