2014-09-15 2 views
2

С тех пор как я обновился до iOS 8, Datepicker больше не работает, потому что Actionheet не может добавлять какие-либо Subviews в iOS 8. Причина в том, что Apple изменила документацию.Xamarin iOS 8 Datepicker

Кто-нибудь знает, как легко установить Datepicker в iOS 8?

ответ

4

Другой пользователь не использует ActionSheet подход и только с использованием отдельного UIViewController, чтобы обойти это ограничение.

Подробности можно увидеть на следующий пост: -

http://forums.xamarin.com/discussion/24128/ios-8-datepicker

Существует также некоторый код на: -

https://github.com/SharpMobileCode/ModalPickerViewController

и даже пост в блоге о том, как использовать его : -

http://sharpmobilecode.com/a-replacement-for-actionsheet-date-picker/

+0

Удивительное сообщение в блоге от этого парня. Используя его сразу ... – Hutjepower

0

Используйте UIAlertController, предпочтительную замену для UIActionSheet. Затем добавьте UIDatePicker addSubView в UIAlertController.view вместо UIActionSheet. Установите заголовок UIAlertController так же, как вы бы сделали для UIActionSheet. Вот пример кода:

NSString *title = UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation) ? @"\n\n\n\n\n\n\n\n\n" : @"\n\n\n\n\n\n\n\n\n\n\n\n" ; 
    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1){ 

     //Pre iOS 8 
     UIActionSheet *actionSheet = [[UIActionSheet alloc] 
             initWithTitle:title 
             delegate:self 
             cancelButtonTitle:nil 
             destructiveButtonTitle:nil 
             otherButtonTitles:@"OK", nil]; 

     [actionSheet addSubview:datePicker]; 
     [actionSheet setTag:ACTION_SHEET_DATEPICKER]; 
     [actionSheet showInView:self.mapView]; 

    } else { 

     //for iOS 8 

     UIAlertController* datePickerContainer = [UIAlertController alertControllerWithTitle: title 
                        message:nil 
                       preferredStyle: UIAlertControllerStyleActionSheet]; 

     [datePickerContainer.view addSubview:datePicker]; 

     //Add autolayout constraints to position the datepicker 
     [datePicker setTranslatesAutoresizingMaskIntoConstraints:NO]; 

     // Create a dictionary to represent the view being positioned 
     NSDictionary *labelViewDictionary = NSDictionaryOfVariableBindings(datePicker); 

     NSArray* hConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[datePicker]-|" options:0 metrics:nil views:labelViewDictionary]; 
     [datePickerContainer.view addConstraints:hConstraints]; 
     NSArray* vConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[datePicker]" options:0 metrics:nil views:labelViewDictionary]; 
     [datePickerContainer.view addConstraints:vConstraints]; 

     [datePickerContainer addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){ 
      [self dateSelected:nil]; 
     }]]; 

     [self presentViewController:datePickerContainer animated:YES completion:nil]; 

    } 

Пожалуйста, исправьте и улучшите, по своему усмотрению.

0
public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 


      datePicker.ValueChanged += (object sender, EventArgs e) => 
      { 
       lblDisplay.Text = datePicker.Date.ToString(); 

      }; 

     } 
Смежные вопросы