ストーリーボードを使用して iPad アプリを作成しています。データを含むテーブルビューを備えた1つの大きなコンテナを配置する「データページ」(ビュー)があります。次に、上に3つの小さなコンテナがあり、テーブルビューもあり、大きなコンテナのデータをフィルタリングする必要があります。IB では、すべてのテーブルビューを埋め込みセグエで接続しました。視覚的には、必要に応じて、すべてのテーブルがコンテンツとともに表示されます。ここまでは順調ですね。
今度は通信部分です。「フィルター テーブルビュー」ごとに、プロトコル メソッドとデリゲート プロパティを実装し、「データ」コンテナー テーブルビュー コントローラーをそれに準拠させました。しかし、どういうわけかメソッドが呼び出されていません。フィルター テーブルビュー コントローラーで [self setDelegate:self] を設定しようとしましたが、「: 認識されないセレクターがインスタンスに送信されました」でアプリがクラッシュします。
これは私の最初のデリゲート プロトコルではありません。他の (作業中の) ケースでは、プログラムでビューをインスタンス化し、デリゲートをそのビューに設定する必要がありました。ここはどうやって???
次の質問は次のとおりです。データ コンテナー ビューコントローラーを 3 つのデリゲートに適合させるには、3 つの異なる型 ID プロパティを設定するだけですか? (つまり、呼び方が違う?)
どんなヒントでも大歓迎です!
編集:コードが追加されました。[filter:selection:] が呼び出されていません... NSLogs がありません..
//MainDataViewController.h
@interface MainDataViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource,FilterDelegate>
-(void)filter:(Object *)filterObject selecting:(BOOL)selection;
@end
//MainDataViewController.m
#import "MainDataViewController.h"
#import "FilterViewController.h"
@interface MainDataViewController ()
@end
@implementation MainDataViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
}
- (void)filter:(Object *)filterObject selecting:(BOOL)selection;
{
NSLog(@"test");
NSLog(@"selection object: %@", filterObject);
}
@end
//FilterViewController.h
@protocol FilterDelegate <NSObject>
- (void)filter:(Object *)filterObject selecting:(BOOL)selection;
@end
@interface FilterViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, weak) id <FilterDelegate> delegate;
@end
//FilterViewController.m
#import "FilterViewController.h"
@interface FilterViewController ()
@end
@implementation FilterViewController
@synthesize delegate;
- (void)viewDidLoad
{
[super viewDidLoad];
[self setDelegate:self];
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
}
[self.delegate filter:object selecting:YES];
}