我正在关注Stanford cs193p lesson 7
使用SplitViewControllers
和协议。我正在做与教授完全相同的事情(多次检查),但我一遍又一遍地收到这个错误。
我定义了一个协议SplitViewBarButtonItemPresenter.h
#import <UIKit/UIKit.h>
@protocol SplitViewBarButtonItemPresenter <NSObject>
@property (nonatomic,strong) UIBarButtonItem *splitViewBarButtonItem;
@end
在我的主 CalculatorViewController.h
@interface CalculatorViewController : UIViewController <UISplitViewControllerDelegate>
在 CalculatorViewController.m
-(id <UISplitViewControllerDelegate>)splitViewBarButtonItemPresenter
{
id detailVC = [self.splitViewController.viewControllers lastObject];
if(![detailVC conformsToProtocol:@protocol(SplitViewBarButtonItemPresenter)]){
detailVC = nil;
}
return detailVC;
}
- (void)awakeFromNib
{
[super awakeFromNib];
super.splitViewController.delegate = self;
}
后来当我尝试设置 barButtonItem
-(void)splitViewController:(UISplitViewController *)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController:(UIPopoverController *)pc
{
barButtonItem.title = self.title;
[self splitViewBarButtonItemPresenter].splitViewBarButtonItem = barButtonItem;
}
我不断收到标题中的错误,就好像我没有正确声明协议和委托一样。我真的不知道还能去哪里寻找错误,因为我正在逐行、逐字地遵循斯坦福教授的做法。错误在这一行,特别是:
[self splitViewBarButtonItemPresenter].splitViewBarButtonItem = barButtonItem;