私は、カスタム UITableViewController シーンから Picker View を含み、@required pickerview デリゲート/データソース メソッドを実装するカスタム UIViewController シーンへのプッシュ セグエイングに問題を抱えている初心者の ios プログラマーです。
[より多くの洞察を提供するためにここにスクリーンショットを用意しましたが、画像を投稿する担当者がいません。3 つの静的な行を持つテーブルビュー コントローラーを想像してください。それぞれが、それぞれのピッカー ビューにプッシュするための詳細開示を提供します - [画像]
テーブルの開示インジケーターのいずれかをタップすると、実行時に問題が発生します。返されるエラーは
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
と .m:
#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 書籍を見つけることができませんでした。「認識されないセレクターがインスタンスに送信されました」の考えられる原因についての一般的な考えはありますが、その修正がここでどのように適用されるかはわかりません。これが私の最初の投稿であるため、適切にフォーマットされていなかったり、十分な/関連情報を提供していなかったりした場合は、お詫び申し上げます。