UIPicker并将选定的行数据发送到UIView

时间:2010-04-08 15:06:06

标签: iphone

我写了一个UIPicker,它是从.plist填充的。这部分工作正常。 我不知道如何选择行是在另一个UIView中显示基础数据。

我的.m文件中的代码是:

    #import "airlinePickerViewController.h"


@implementation airlinePickerViewController

@synthesize picker;
@synthesize airlines;
@synthesize airline;
@synthesize teleno;



- (IBAction)butonPressed:(id)sender
{
 NSInteger airRow = [picker selectedRowInComponent:kAirlineComponent];
 NSInteger telRow = [picker selectedRowInComponent:kTelenoComponent];

 NSString *air = [self.airline objectAtIndex:airRow];
 NSString *tel = [self.teleno objectAtIndex:telRow];

 NSString *title = [[NSString alloc] initWithFormat:@"You selected  %@.", tel];
 NSString *message = [[NSString alloc] initWithFormat:@"%@ is in %@", tel, air];

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alert show];
 [alert release];
 [title release];
 [message release];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
 if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
  // Initialization code
 }
 return self;
}

- (void)viewDidLoad {

 NSBundle *bundle = [NSBundle mainBundle];
 NSString *plistPath = [bundle pathForResource:@"airlinedictionary" ofType:@"plist"];
 NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
 self.airlines = dictionary;
 [dictionary release];

 NSArray *components = [self.airlines allKeys];
 NSArray *sorted = [components sortedArrayUsingSelector:@selector(compare:)];
 self.airline = sorted;

 NSString *selectedAirline = [self.airline objectAtIndex:0];
 NSArray *array = [airlines objectForKey:selectedAirline];
 self.teleno = array;
}



- (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 { 
 [picker release];
 [airlines release];
 [airline release];
 [teleno release];
 [super dealloc];
}
#pragma mark -
#pragma mark Picker Data Source Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
 return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
 if (component == kAirlineComponent)
  return [self.airline count];
 return [self.teleno count];
}
#pragma mark Picker Delegate Methods
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
 if (component == kAirlineComponent)
  return [self.airline objectAtIndex:row];
 return [self.teleno objectAtIndex:row];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
 if (component == kAirlineComponent)
 {
  NSString *selectedAirline = [self.airline objectAtIndex:row];
  NSArray *array = [airlines objectForKey:selectedAirline];
  self.teleno = array;
  [picker selectRow:0 inComponent:kTelenoComponent animated:YES];
  [picker reloadComponent:kTelenoComponent];
 }
}
@end

#import "airlinePickerViewController.h" @implementation airlinePickerViewController @synthesize picker; @synthesize airlines; @synthesize airline; @synthesize teleno; - (IBAction)butonPressed:(id)sender { NSInteger airRow = [picker selectedRowInComponent:kAirlineComponent]; NSInteger telRow = [picker selectedRowInComponent:kTelenoComponent]; NSString *air = [self.airline objectAtIndex:airRow]; NSString *tel = [self.teleno objectAtIndex:telRow]; NSString *title = [[NSString alloc] initWithFormat:@"You selected %@.", tel]; NSString *message = [[NSString alloc] initWithFormat:@"%@ is in %@", tel, air]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; [title release]; [message release]; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { // Initialization code } return self; } - (void)viewDidLoad { NSBundle *bundle = [NSBundle mainBundle]; NSString *plistPath = [bundle pathForResource:@"airlinedictionary" ofType:@"plist"]; NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath]; self.airlines = dictionary; [dictionary release]; NSArray *components = [self.airlines allKeys]; NSArray *sorted = [components sortedArrayUsingSelector:@selector(compare:)]; self.airline = sorted; NSString *selectedAirline = [self.airline objectAtIndex:0]; NSArray *array = [airlines objectForKey:selectedAirline]; self.teleno = array; } - (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 { [picker release]; [airlines release]; [airline release]; [teleno release]; [super dealloc]; } #pragma mark - #pragma mark Picker Data Source Methods - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 1; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == kAirlineComponent) return [self.airline count]; return [self.teleno count]; } #pragma mark Picker Delegate Methods - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component == kAirlineComponent) return [self.airline objectAtIndex:row]; return [self.teleno objectAtIndex:row]; } - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (component == kAirlineComponent) { NSString *selectedAirline = [self.airline objectAtIndex:row]; NSArray *array = [airlines objectForKey:selectedAirline]; self.teleno = array; [picker selectRow:0 inComponent:kTelenoComponent animated:YES]; [picker reloadComponent:kTelenoComponent]; } } @end

任何人都可以帮助我掌握如何完成这项任务。

非常感谢

德雷克

1 个答案:

答案 0 :(得分:0)

现在以某种方式回答: 我假设你想要切换到一个全新的View(不是子视图),所以你可能需要的第一件事是导航控制器或TabBarController,以便于推送/切换到新的视图。在切换/推送新视图之前,您可以在初始化之后但切换到新视图之前将所选值作为属性分配给新视图。