Представление сборщика отображается и заполняется правильно, но не интерактивно - PullRequest
0 голосов
/ 16 апреля 2010

Я создал представление Picker в задаче C и заполнил его NSArray, и все работает нормально, оно компилируется и отображается на экране, но средство выбора ничего не делает. Я хотел бы повернуться, когда пользователь проводит пальцем по экрану, как и следовало ожидать, но он все равно не реагирует.

'lil Помощь?

Код, который я использовал для средства выбора, взят из «Начала разработки для iPhone», но у меня больше экранов (вид карты и вид, который я использую для рисования) на экране, для ясности я могу просто вывести здесь весь код, поэтому Я ограничусь тем, что считаю уместным.

//  SingleComponentPickerViewController.h
#import <UIKit/UIKit.h>


@interface SingleComponentPickerViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {
    IBOutlet    UIPickerView *singlePicker;
                NSArray *pickerData;
}
@property (nonatomic, retain) UIPickerView *singlePicker;
@property (nonatomic, retain) NSArray *pickerData;
- (IBAction)buttonPressed:(id)sender;
@end


//  SingleComponentPickerViewController.m

#import "SingleComponentPickerViewController.h"

@implementation SingleComponentPickerViewController
@synthesize singlePicker;
@synthesize pickerData;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Initialization code
    }
    return self;
}
- (IBAction)buttonPressed:(id)sender
{
    NSInteger row = [singlePicker selectedRowInComponent:0];
    NSString *selected = [pickerData objectAtIndex:row];
    NSString *title = [[NSString alloc] initWithFormat:@"You selected %@!", selected];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:@"Thank you for choosing." delegate:nil cancelButtonTitle:@"You're Welcome" otherButtonTitles:nil];
    [alert show];
    [alert release];
    [title release];
}
- (void)viewDidLoad {
    NSArray *array = [[NSArray alloc] initWithObjects:@"Luke", @"Leia", @"Han", @"Chewbacca", @"Artoo", @"Threepio", @"Lando", nil];
    self.pickerData = array;
    [array release];

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
    // Release anything that's not essential, such as cached data
}

- (void)dealloc {
    [singlePicker release];
    [pickerData release];
    [super dealloc];
}
#pragma mark -
#pragma mark Picker Data Source Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return [pickerData count];
}
#pragma mark Picker Delegate Methods
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return [pickerData objectAtIndex:row];
}
@end

Это код, но у меня есть ощущение, что проблема больше связана с тем, как представления размещаются / взаимодействуют.

1 Ответ

0 голосов
/ 17 апреля 2010

Установить для свойства "useractionEnabled" значение true (либо в IB, либо в коде)? Это должно быть по умолчанию.

Но, как упоминалось выше в комментариях ... некоторый код может быть полезен:)

...