マスターと詳細の両方で NavigationController を使用して SplitViewController を実装しようとしています。私はこのチュートリアルに従っていますが、まだかなり奇妙な問題に遭遇しています。デリゲートメソッドを呼び出そうとすると、-[UINavigationController selectedStudent:]: unrecognized selector sent to instance...
どんな助けでも大いに感謝します。
コードは次のとおりです。
StudentSelectionDelegate.h
#import <Foundation/Foundation.h>
@class Student;
@protocol StudentSelectionDelegate <NSObject>
@required
-(void)selectedStudent:(Student *)newStudent;
@end
StudentDetail は、分割ビューの詳細を表します。StudentDetail.h で私は持っています
#import "StudentSelectionDelegate.h"
@interface StudentDetail : UITableViewController <StudentSelectionDelegate>
...
StudentDetail.m
@synthesize SentStudent;
...
-(void)selectedStudent:(Student *)newStudent
{
[self setStudent:newStudent];
}
StudentList は分割ビューのマスターを表します。StudentList.h には次のものがあります。
#import "StudentSelectionDelegate.h"
...
@property (nonatomic,strong) id<StudentSelectionDelegate> delegate;
StudentList.m のdidSelectRowAtIndexPath
[self.delegate selectedStudent:SelectedStudent];
そして、「SelectedStudent」はnullではありません
そして最後に AppDelegate.m
#import "AppDelegate.h"
#import "StudentDetail.h"
#import "StudentListNew.h"
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *leftNavController = [splitViewController.viewControllers objectAtIndex:0];
StudentListNew *leftViewController = (StudentListNew *)[leftNavController topViewController];
StudentDetail *rightViewController = [splitViewController.viewControllers objectAtIndex:1];
leftViewController.delegate = rightViewController;
return YES;
}
PS私は何時間も解決策を探していました。