2016-07-15 6 views
0

Попытка показать UIDatePickerView как dialog box как показано в Android. Я попытался добавить его на UIAlertView, но не смог его добавить.UIDatePickerView In Popup in iOS

Кто-нибудь это пробовал?

+0

Если вы нажмете кнопку ok в окне оповещения, нужно открыть datePicker? – user3182143

+0

Нет, у меня есть кнопка на моем экране. При нажатии этой кнопки мне нужно UIDatePicker как всплывающее окно, например UIAlertView, где я могу выбрать дату. У меня вопрос? – surendrasheoran

+0

Да ясно человек. – user3182143

ответ

0

AddSubview не доступен в UIAlertView в iOS7

UIAlertView класс предназначен для использования в качестве-она есть, и не поддерживает подклассов. Иерархия представления для этого класса является частной и ее нельзя изменять.

Вы должны использовать UIAlertViewcontoller. Вот код:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"\n\n\n\n\n\n\n\n\n\n\n" message:nil preferredStyle:UIAlertControllerStyleActionSheet]; 
UIDatePicker *picker = [[UIDatePicker alloc] init]; 
[picker setDatePickerMode:UIDatePickerModeDate]; 
[alertController.view addSubview:picker]; 
[alertController addAction:({ 
UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
NSLog(@"OK"); 
NSLog(@"%@",picker.date); 
}]; 
action; 
})]; 
UIPopoverPresentationController *popoverController = alertController.popoverPresentationController; 
popoverController.sourceView = sender; 
popoverController.sourceRect = [sender bounds]; 
[self presentViewController:alertController animated:YES completion:nil]; 

Надеется, что это поможет ....

+0

проверит и обновит вас. спасибо – surendrasheoran

+0

Это работает ?? –

0

В кнопке действия я поставил Datepicker

ViewController.m

#import "ViewController.h" 

@interface ViewController() 
{ 
    UIDatePicker *datepicker; 
} 

@end 

@implementation ViewController   



-(IBAction) showDatePicker:(id)sender 
{ 
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"\n\n\n\n\n\n\n" message:nil preferredStyle:UIAlertControllerStyleAlert]; 
    datepicker = [[UIDatePicker alloc]init]; 
    [datepicker setDatePickerMode:UIDatePickerModeDateAndTime]; 
    [datepicker setDatePickerMode:UIDatePickerModeDate]; 
    [datepicker addTarget:self action:@selector(getPickerValue:) forControlEvents:UIControlEventValueChanged]; 

    [alertController addAction:({ 
    UIAlertAction *action = [UIAlertAction actionWithTitle:@"Done" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
     NSLog(@"The selected or picked datePicker value is - %@",datepicker.date); 
     txtfldGetDatePickerValue.text = [self getStringDateFromDate:datepicker.date]; 
    }]; 
    action; 
})]; 

[alertController.view addSubview:datepicker]; 
[self presentViewController:alertController animated:YES completion:nil]; 
} 

-(void)getPickerValue:(UIDatePicker *)pickerDate 
{ 
    txtfldGetDatePickerValue.text = [self getStringDateFromDate:pickerDate.date]; 
} 

-(NSString *)getStringDateFromDate:(NSDate *)pickerDate 
{ 
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"dd/MM/yyyy"]; 
    return [formatter stringFromDate:pickerDate]; 
} 

Я пробовал много решений и я получил результат окончательно. Поскольку я не дал ответ правильно, я хотел дать лучший ответ на ваш вопрос. Я искал столько ответов. Даже я создал образец проекта для достижения этого. Я не использовал лист действий и контроллер представления popoverpresentation. Просто я использовал кодировку с UIAlertViewController.

UIDatePicker to action sheet was discouraged by Apple all along

+0

Он отобразит UIDatepicker в определенном месте, а не всплывающее окно. – surendrasheoran

+0

Вам нужно реализовать это для iPhone или iPAd? – user3182143

+0

в iPhone. iPad обеспечивает UIPopoverViewController для этого. – surendrasheoran

0

Это будет работать .. проверить на code.This будет работать в ios7 и выше

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Select Date" message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 
    UIDatePicker *picker = [[UIDatePicker alloc] initWithFrame:CGRectMake(10, alert.bounds.size.height, 320, 216)]; 
[alert addSubview:picker]; 
alert.bounds = CGRectMake(0, 0, 320 + 20, alert.bounds.size.height + 216 + 20); 
[alert setValue:picker forKey:@"accessoryView"]; 
[alert show]; 
0

Для Отображение поповер в телефоне Просто сделать Категория UIPopoverController кодекса:

// UIPopoverController+iPhone.h 
#import <UIKit/UIKit.h> 

@interface UIPopoverController (iPhone) 
+ (BOOL)_popoversDisabled; 
@end 
// UIPopoverController+iPhone.m 


#import "UIPopoverController+iPhone.h" 

@implementation UIPopoverController (iPhone) 
+ (BOOL)_popoversDisabled { 
    return NO; 
} 
@end 

Это поможет вам в этом.

+0

@surendrasheoran Просто введите категорию Где вы хотите использовать –