Objective-C委托 - 无法在此示例中查看委托的工作方式

时间:2015-03-03 15:05:06

标签: objective-c delegates

我在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方法中 一个)。

混淆。任何人都可以对此有所了解吗?

1 个答案:

答案 0 :(得分:0)

项目可以be found here

AppDelegate中,将对象设置为 NBMSearchViewController delegate,因为有两个不同的UIViewControllers已初始化,具体取决于启动应用的平台(iPhone / iPad)。在我看来,iPhone上没有搜索功能。

您还可以使用 CMD 选择委托方法,然后获得一些提示将执行方法的提示:

enter image description here