我是一个新手 ios 程序员,在将自定义 UITableViewController 场景推送到自定义 UIViewController 场景时遇到了一些麻烦,该场景包含一个 Picker View 并实现了@required pickerview 委托/数据源方法。
[我在这里有一个截图可以提供更多见解,但我没有代表发布图片。想象一个具有三个静态行的 tableview 控制器,每个都提供详细信息以推送到相应的选择器视图 -图片]
当我点击表格的任何披露指标时,问题会在运行时发生。返回的错误是
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PickerViewController superview]: unrecognized selector sent to instance."
如前所述,LocationFilter 是 UITableViewController 的子类,并且仅包含标签和步进器的一些属性。
我的选择器视图控制器的代码如下:
#import <UIKit/UIKit.h>
@interface PickerViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>
{
NSArray *sectionCandidates;
NSArray *bankCandidates;
NSArray *positionCandidates;
}
@property (weak, nonatomic) IBOutlet UIPickerView *sectionPicker;
@property (weak, nonatomic) IBOutlet UIPickerView *bankPicker;
@property (weak, nonatomic) IBOutlet UIPickerView *positionPicker;
@property NSArray *sectionCandidates, *bankCandidates, *positionCandidates;
@end
还有他们:
#import "PickerViewController.h"
#import "SlotMachine.h"
@implementation PickerViewController
@synthesize sectionCandidates, sectionPicker, bankCandidates, bankPicker, positionCandidates, positionPicker;
- (void)viewDidLoad
{
[super viewDidLoad];
sectionCandidates = [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", nil];
bankCandidates = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", nil];
positionCandidates = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", @"4", @"5", @"6", nil];
}
// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
//Handle Selection
}
// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
switch ([pickerView tag])
{
case 0:
return [sectionCandidates count];
case 1:
return [bankCandidates count];
case 2:
return [positionCandidates count];
default:
return 0;
}
}
// returns the label for each row
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
switch ([pickerView tag])
{
case 0:
return [sectionCandidates objectAtIndex:row];
case 1:
return [bankCandidates objectAtIndex:row];
case 2:
return [positionCandidates objectAtIndex:row];
default:
return @"Null";
}
}
@end
不幸的是,选择器视图在故障排除方面似乎并没有得到太多详细的关注,所以我无法在 SO 或一些我一直在阅读的 iOS 书籍中找到很多内容来帮助我解决这个问题。我对“发送到实例的无法识别的选择器”的可能原因有一个大致的了解,但我不确定如何在此处应用该修复程序。我提前感谢我可能收到的任何帮助,如果我没有正确格式化或提供足够/相关信息,我也深表歉意,因为这是我的第一篇文章!