2012-01-04 4 views
5

У меня есть UIPickerView и нужно сделать его отображаемым внутри UIActionSheet в iPad (он работает очень просто в iPhone, а не в iPad).Добавление UIPickerView внутри таблицы UIActionSheet в iPad

Я кнопку на View, когда я нажимаю на я выполнить следующий код:

- (IBAction) buttonPressed:(id)sender 
{ 
    NSLog(@"I am pressed"); 

    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(100,200,500,500)]; 
    picker.delegate = self; 
    picker.dataSource = self; 
    picker.showsSelectionIndicator = YES; 
    [self.view addSubview:picker];  
} 

// делегат и DataSource функции PickerView:

// returns the number of 'columns' to display. 
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

// returns the # of rows in each component.. 
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return 5; 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return @"One"; 
} 

Но когда изменение выше код для добавления PickerView внутри ActionSheet, Он показывает только заголовок ActionSheet, но без PickerView внутри него!

Измененный код следующим образом:

- (IBAction) buttonPressed:(id)sender 
{ 
    NSLog(@"I am pressed"); 

    UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:@"My PickerView" 
               delegate:nil 
            cancelButtonTitle:nil 
           destructiveButtonTitle:nil 
            otherButtonTitles:nil]; 

    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(100,200,500,500)]; 
    picker.delegate = self; 
    picker.dataSource = self; 
    picker.showsSelectionIndicator = YES; 

    [actionSheet addSubview:picker]; 
    [actionSheet showFromRect:CGRectMake(0, 0, 320, 469) inView:self.view animated:NO]; 

} 

ответ

4

Я засасываю, я собираюсь использовать UIPopoverController вместо UITableViewController! .. Спасибо, в любом случае!

1

Попробуйте изменить рамку подборщика. (100, 200) на (x, y) может не быть хорошей позицией.

+0

Когда я сменил pickerView initLine на 'UIPickerView * picker = [[UIPickerView alloc] initWithFrame: CGRectMake (0,0,320,469)];' Теперь я могу видеть очень маленькую часть PickerView внутри ActionSheet, но показан ActionSheet как очень маленький квадрат. Как я могу сделать его больше, я пытаюсь изменить его ширину и высоту, но, похоже, не работает! –

+0

Попробуйте установить cancelButtonTitle для некоторого NSString, чтобы узнать, изменяется ли размер. –

+0

Я засасываю, вместо этого я буду использовать 'UIPopoverController' с' UITableViewController' внутри! .. Спасибо, в любом случае! –

-4

Я думаю, что линия должна быть ([actionSheet addSubview:picker];) [actionSheet addSubview:picker.view];
У меня была такая же проблема, но с использованием UIWindow.

+0

'UIPickerView' наследуется от' UIView'; у него нет собственного свойства 'view'. – Olie

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