2014-11-04 3 views
0

Раньше я использовал UIactionSheet, но поскольку это было устаревшим, я пытаюсь использовать UIAlertController для отображения UIPicker. Вот часть кода, которую я использую, чтобы добавить сборщика в UIAlertController.Не удалось показать UIPickerView внутри UIAlertController на iOS8

 UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"some_title" 
                      message:nil 
                     preferredStyle:UIAlertControllerStyleActionSheet]; 
    [alertController setModalPresentationStyle:UIModalPresentationPopover]; 
    [alertController.view addSubview:_formatPickerView]; 
    UIPopoverPresentationController *popPresenter = [alertController 
                popoverPresentationController]; 
    // cell is a cell from a tableview 
    popPresenter.sourceView = cell; 
    popPresenter.sourceRect = cellRect; 
    [self presentViewController:alertController animated:NO completion:nil]; 

Это поднимает AlertController но без початкоотделяющем.

интересное наблюдение состоит в том, что если я изменю preferredStyle в

[UIAlertController alertControllerWithTitle:@"some_title" message:nil preferredStyle:UIAlertControllerStyleActionSheet];

UIAlertControllerStyleActionSheet от до UIAlertControllerStyleAlert тогда я начинаю получать Picker, но я теряю контроль над положением UIAlertController.

Я хочу, чтобы контроль над положением UIAlertController так я использую UIAlertControllerStyleActionSheet

Кто-нибудь видел эту проблему раньше? Любая помощь приветствуется. Благодаря!

ответ

0

Я решил это, показывая UIPickerView внутри UIActionSheet.

UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:@"\n\n\n\n\n\n\n\n\n\n" 
                  delegate:nil 
                cancelButtonTitle:nil 
               destructiveButtonTitle:nil 
                otherButtonTitles:nil]; 
    actionSheet.delegate = self; 
    [actionSheet addSubview:_formatPickerView]; 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
    CGRect cellRect = cell.bounds; 
    cellRect.size.width = cell.frame.size.width * 2; 
    cellRect.origin.x = -(cell.frame.size.width/2); 

    [actionSheet showFromRect:cellRect inView:cell animated:YES]; 
Смежные вопросы