TableViewController(FilterTableViewController)にセグエする親ViewController(SearchViewController)があり、ユーザーはTableViewで人物を選択できます。選択内容は、selectedpersonArrayと呼ばれるNSMutableArrayに格納されます。これは、すでに正常に機能しています。しかし今、私はそれらを親のViewControllerに戻す必要があります。プロトコル/デリゲートを実装しようとしました。私はObjective-Cを初めて使用するため、一部の部分を正しく理解しておらず、機能しません。
FilterTableViewController.h(子コントローラー)
@protocol filterDelegate <NSObject>
-(void)addArraytoSearchViewController:(NSMutableArray *)array;
@end
@interface FilterTableViewController : UITableViewController
@property (nonatomic, assign) id <filterDelegate> selectedpersonDelegate;
@property (nonatomic, retain) NSMutableArray *selectedpersonArray;
@end
FilterTableViewController.m
#import "FilterTableViewController.h"
@interface FilterTableViewController ()
@end
@implementation FilterTableViewController
...
@synthesize selectedpersonArray;
@synthesize selectedpersonDelegate;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[[self selectedpersonDelegate] addArraytoSearchViewController:selectedpersonArray];
NSLog(@"personarray: %@", selectedpersonDelegate);
}
質問1:NSLogに代理人を表示できますか?ここではnilを返しますが、selectedpersonArrayには値が含まれています。質問2:複数の選択が可能であり、[戻る]ボタンが押された場合にのみ配列を渡すことができるため、didSelectRowAtIndexPathよりも配列を渡すのに適した場所はありますか。*-(void)prepareForSegue:(UIStoryboardSegue )segue sender:(id)senderを使用できますか?
SearchViewController.h :(親ビュー)
#import "FilterTableViewController.h"
@interface SearchViewController: UIViewController <UITableViewDataSource, UITableViewDelegate, filterDelegate>
SearchViewController.m:
@implementation SearchViewController
...
- (void)viewDidLoad{
FilterTableViewController * FTC = [[FilterTableViewController alloc] init];
FTC.delegate = self;
- (void)addArraytoSearchViewController:(NSMutableArray *)array {
NSLog(@"%@", array);
}
質問3:NSLogはここでは何もしません...何が問題なのですか?質問4:2番目のViewControllerから複数の配列を渡すにはどうすればよいですか?
前もって感謝します!