デリゲートを使用する場合は、LeftViewController.h ファイルにプロトコルを追加する必要があります。
@protocol LeftViewControllerDelegate <NSObject>
-(void)useThisValue:(NSString *)value;
@end
@interface LeftViewController : UITableViewController
@property (weak, nonatomic) id <LeftViewControllerDelegate> delegate;
@end
tableView:didSelectRowAtIndexPath: メソッドで、追加できます
[self.delegate useThisValue:menu[indexPath.row]];
CenterViewController は LeftViewController のデリゲートになるため、CenterViewController.h ファイルに LeftViewController.h をインポートして以下を追加します。
@interface CenterViewController : UIViewController <LeftViewControllerDelegate>
- (void)useThisValue:(NSString *)value;
CenterViewController.m ファイルで、AppDelegate.h と RootViewController.h ファイルの両方をインポートします。その viewDidLoad メソッドで、JASidePanelController サブクラス (RootViewController) と leftViewController の現在のインスタンスへの参照を取得する必要があります。
RootViewController *rootViewController = (RootViewController *)[[[[UIApplication sharedApplication] delegate] window] rootViewController];
LeftViewController *leftViewController = (LeftViewController *)rootViewController.leftPanel;
次に、CenterViewController を LeftViewController のデリゲートにします。
leftViewController.delegate = self;
[super viewDidLoad];
必要に応じてデリゲート メソッドを実装します。次に例を示します。
- (void) useThisValue:(NSString *)value
{
self.label.text = value;
}
JASidePanels でデリゲート パターンを機能させるために、RootViewController と LeftViewController のインスタンスを適切に取得する方法を指摘してくれた Kevin McNeish 氏に感謝します。