我UIPickerViews
在同一个视图控制器下的一个视图上设置了两个。选择器似乎填充了预期的值。我也有每个选择器的标签。标签会随着每个值的变化而更新,但标签上显示的值不正确。它总是在 10 点前关闭。代码如下。
界面:
#import <UIKit/UIKit.h>
#import "InfoViewController.h"
@interface TransactionsViewController : UIViewController {
//Deposit
NSMutableArray *depositArray;
IBOutlet UIPickerView *depositPicker;
IBOutlet UILabel *depositLabel;
//Send
NSMutableArray *sendArray;
IBOutlet UIPickerView *sendPicker;
IBOutlet UILabel *sendLabel;
}
@property (nonatomic, retain) NSMutableArray *depositArray;
@property (nonatomic, retain) IBOutlet UIPickerView *depositPicker;
@property (nonatomic, retain) NSMutableArray *sendArray;
@property (nonatomic, retain) IBOutlet UIPickerView *sendPicker;
@property (nonatomic, retain) IBOutlet UILabel *depositLabel;
@property (nonatomic, retain) IBOutlet UILabel *sendLabel;
@end
执行:
#import "TransactionsViewController.h"
@implementation TransactionsViewController
@synthesize depositArray;
@synthesize depositPicker;
@synthesize sendArray;
@synthesize sendPicker;
@synthesize depositLabel;
@synthesize sendLabel;
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *dollarsArray = [[NSMutableArray alloc] init];
for (int i = 5; i <= 100; i+=5)
{
NSString *item = [[NSString alloc] initWithFormat:@"%i", i];
[dollarsArray addObject:item];
[item release];
}
self.depositArray = dollarsArray;
self.sendArray = dollarsArray;
[dollarsArray release];
}
// Pickers
#pragma mark - Pickers
#pragma mark Pickers Data Source Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if(pickerView == depositPicker) {
switch(component) {
case 0:
return 1;
break;
case 1:
return [depositArray count];
break;
default:
break;
}
}
else if(pickerView == sendPicker) {
switch(component) {
case 0:
return 1;
break;
case 1:
return [sendArray count];
break;
default:
break;
}
}
return 0;
}
-(CGFloat)pickerView:(UIPickerView*)pickerView widthForComponent:(NSInteger)component {
switch (component) {
case 0:
return 50;
break;
case 1:
return 100;
break;
default:
break;
}
return 0;
}
#pragma mark Pickers Delegate Methods
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if(pickerView == depositPicker) {
switch(component) {
case 0:
return @"$";
break;
case 1:
depositLabel.text=[depositArray objectAtIndex:row];
return [depositArray objectAtIndex:row];
[depositLabel release];
break;
default:
break;
}
}
else if(pickerView == sendPicker) {
switch(component) {
case 0:
return @"$";
break;
case 1:
return [sendArray objectAtIndex:row];
break;
default:
break;
}
}
return 0;
}
//Pickers End
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[depositArray release];
[send release];
[super dealloc];
}
@end
尚未设置所有内容,例如 sendLabel。如您所见, depositLabel 会自动更新所选行,但是该值并未更新为正确的值。我不确定是我的标签实现还是选择器本身是问题所在。
我会很感激一些意见。谢谢。