【发布时间】:2017-02-07 16:41:14
【问题描述】:
为您准备的另一个 Objective-C,可能很明显,但我已经在这几天了,在在这里和其他地方搜索类似问题后无法让它工作!
我几乎有一个 5 段选择器,当单击按钮时,会显示一个警报表,一旦被接受,它就会抓取选择器轮的值。容易吧,但我无法让它工作,我不确定我哪里出错了......下面的一些代码......它可能很糟糕......但这对我来说都很新,所以任何帮助都是赞赏。顺便说一句,这一切都是在不使用 InterfaceBuilder 的情况下完成的。
操作表之后的所有循环都可以正常工作...我就是无法获取值!
(ps,我希望格式有效!我已经更改了一些命名,但一切都应该是正确的)
谢谢!
我的文件.h
@interface MyViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource, UIActionSheetDelegate>
{
UIPickerView * thePickerView;
NSArray *thePickerValues;
}
@property (nonatomic, retain) UIPickerView *thePickerView;
@property (nonatomic, retain) NSArray *thePickerValues;
- (void)buildPicker;
- (void)doAction;
@end
我的文件.m
@implementation MyViewController
@synthesize thePickerView;
@synthesize thePickerValues;
- (void)viewDidLoad
{
NSArray *values = [[NSArray alloc] initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",nil];
thePickerValues = values;
[values release];
[self buildPicker];
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 5;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [self.thePickerValues count];
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [self.thePickerValues objectAtIndex:row];
}
-(void)buildPicker
{
CGRect pickerFrame = CGRectMake(0.0f,130.0f,320.0,100.0f);
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.delegate = self;
pickerView.showsSelectionIndicator = YES;
[self.view addSubview:pickerView];
[pickerView release];
}
- (void)doAction
{
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:[NSString stringWithFormat:@"Blah blah"]
delegate:self
cancelButtonTitle:@"No!"
destructiveButtonTitle:@"Yes!"
otherButtonTitles:nil];
[actionSheet showInView:self.parentViewController.tabBarController.view];
[actionSheet release];
}
-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if(!(buttonIndex == [actionSheet cancelButtonIndex]))
{
NSLog(@"Get the picker values");
for(int i = 0; i<5;i++)
{
NSInteger *selectedValue = [thePickerView selectedRowInComponent:i];
NSLog(@"Wheel : %i Value : %i", i, selectedValue);
[selectedValue release];
}
}
}
【问题讨论】:
-
好吧,玩了一会儿,我开始认为我没有连接到选择器。例如,我已经移动了代码以将值放入它自己的操作中,该操作在该循环中被调用。我还临时将数组更改为 a、b、c 等。结果似乎表明,无论您选择什么,它都只是将 selectedRowInComponent 设置为 0 还有其他想法吗?
标签: iphone objective-c xcode uipickerview