2012-01-04 27 views
5

UIPickerView kullanıyorum ve iPad'de bir UIActionSheet içinde gösterilmesini sağla (iPad'de değil iPhone'da çok basit çalışıyor). Ne zaman değişiklik yukarıdakiiPad'de UIActionSheet içine bir UIPickerView ekleme

// 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"; 
} 

Ama:

- (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];  
} 

// pickerView temsilci ve veri kaynağı fonksiyonları: Aşağıdaki kodu çalıştırmak üzerine Tıkladığımda

Ben View üzerinde bir düğme var Bir actionSheet içinde PickerView eklemek için kod, Sadece ActionSheet'in üstbilgisini gösterir, ancak içinde PickerView olmadan!

modifiye kodu aşağıdaki gibidir:

- (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]; 

} 

cevap

4

Bunun yerine bir UITableViewController ile bir UIPopoverController kullanacağım! .. Yine de teşekkürler!

1

deneyin seçicinin çerçeve değiştirmek için. (100, 200) açık (x, y) iyi bir pozisyon olmayabilir.

+0

Seçiciyi initLine olarak değiştirdiğimde "UIPickerView * seçici = [[UIPickerView ayırma] initWithFrame: CGRectMake (0,0,320,469)];" Artık ActionSheet içindeki PickerView öğesinin çok küçük bir kısmını görebiliyorum, ancak actionSheet gösteriliyor çok küçük bir kare olarak, nasıl daha büyük yapabilirim, genişliğini ve yüksekliğini değiştirmeye çalışıyorum ama çalışmıyor gibi görünüyor! –

+0

Boyut değiştirilip değiştirilmediğini görmek için cancelButtonTitle'ı bazı NSString'e ayarlamaya çalışın. –

+0

Ben berbat, yerine bir "UITableViewController" ile bir "UIPopoverController" kullanacağım! .. Yine de teşekkürler! –

-4

Ben çizgi ([actionSheet addSubview:picker];) ben aynı sorunu olan ama UIWindow kullanıyordum [actionSheet addSubview:picker.view];
olması gerektiğini düşünüyorum.

+0

"UIPickerView", UIView öğesinden devralınır; Kendi kendine ait bir özelliği yoktur. – Olie