iPhone UIPickerView в UIViewController - PullRequest
       29

iPhone UIPickerView в UIViewController

2 голосов
/ 12 февраля 2010

У меня есть xib, в который я добавил UIViewController с именем delta. Представление в delta контролируется delta viewcontroller, а не владельцем файла. На дельте у меня есть UIViewPicker. Моя проблема в том, что я программирую на UIPickerView на deltaviewcontroller и выдаю deltaviewcontroller в качестве делегата и источника данных для UIPickerView. Все должно работать, но когда я загружаю представление deltaviewcontroller, приложение вылетает. Если я делаю все то же самое в представлении владельца файла, он работает нормально. Мне интересно, есть ли действительно способ заставить UIPickerView работать с UIViewController и не обязательно с владельцем файла.

Для справок, код:

Заголовок

@interface DeltaViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {
    NSMutableArray *arrayNo;
    IBOutlet UIPickerView *pickerView;
}
@property (nonatomic, retain) UIPickerView *pickerView;
@property (nonatomic, retain) NSMutableArray *arrayNo;

@end

Осуществление

#import "DeltaViewController.h"

@implementation DeltaViewController

@synthesize pickerView;
@synthesize arrayNo;

- (void)viewDidLoad
{
    NSMutableArray *dollarsArray = [[NSMutableArray alloc] init];

    for (int i = 0; i < 100; i++)
    {
        NSString *item = [[NSString alloc] initWithFormat:@"%i", i];
        [dollarsArray addObject:item];
    }

    self.arrayNo = dollarsArray;

    [dollarsArray release]; 
}

#pragma mark -
#pragma mark Picker Data Source Methods

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return [arrayNo count];
}

#pragma mark Picker Delegate Methods

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return [arrayNo objectAtIndex:row];
}

- (void)dealloc {
    [arrayNo release];
    [pickerView release];
    [super dealloc];
}

@end

Пожалуйста, укажите, если я делаю что-то не так. Помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2010

Если вы ищете, как добавить UIPickerView в UIView, просто посмотрите пример кода Apple для UIPickerView. Я думаю, что это один из лучших способов научиться правильно использовать разные классы. Есть пять проектов, которые включают в себя UIPickerView. Вот ссылка

Ссылка на класс UIPickerView и пример кода

0 голосов
/ 30 августа 2011

Попробуйте сделать [self.view addSubview: pickerView]; в вашем методе viewDidLoad.

...