我在iPhone上运行应用程序,并且有一行代码如下:
[self.searchControllerDelegate searchController:self didSelectSearchTerm:search.text];
.h
文件定义委托和属性:
@protocol NBMSearchViewControllerDelegate <NSObject>
- (void)searchController:(NBMSearchViewController *)controller didSelectSearchTerm:(NSString *)term;
@end
@property (weak, nonatomic) IBOutlet id<NBMSearchViewControllerDelegate> searchControllerDelegate;
我有点困惑这个委托方法如何链接到这个类。 @property
似乎没有通过IBOutlet
链接,因为Xcode中左侧的灰色圆圈未填写。
我可以找到此方法(searchController:didSelectSearchTerm:
)的唯一文件是NBMIpadDetailsNavigationController
实现。 确实符合NBMSearchViewControllerDelegate
协议,但我确信这不会像我们所拥有的AppDelegate
那样被调用:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
[self setupApplicationForiPad];
} else {
[self setupApplicationForiPhone];
}
我在searchControllerDelegate
方法中看不到setupApplicationForiPhone
的引用(fwiw,setupApplicationForiPad
方法中 一个)。
混淆。任何人都可以对此有所了解吗?
答案 0 :(得分:0)
项目可以be found here。
在AppDelegate
中,将对象设置为 NBMSearchViewController 的delegate
,因为有两个不同的UIViewControllers
已初始化,具体取决于启动应用的平台(iPhone / iPad)。在我看来,iPhone上没有搜索功能。
您还可以使用 CMD 选择委托方法,然后获得一些提示将执行方法的提示: