在我的 UITableViewController 子类的tableView:cellForRowAtIndexPath:实现中,我正在使用以下代码片段:
AlarmPicker *alarmPicker = [[AlarmPicker alloc] init];
alarmPicker.scrollViewDelegate = alarmPicker;
[cell.contentView addSubview:alarmPicker.view];
AlarmPicker实现了各种UIScrollViewDelegate方法。
在AlarmPicker.h我声明scrollViewDelegate如下:
@property (assign) id<UIScrollViewDelegate> scrollViewDelegate;
然后在AlarmPicker的实现部分中使用它:
UIScrollView *returnScrollView = [[UIScrollView alloc] init];
...
returnScrollView.delegate = self.scrollViewDelegate;
不幸的是,在此AlarmPicker实例中, scrollViewDelegate始终为 null,因此根本不会调用已实现的委托方法。
一种解决方法是将UIScrollViewDelegate方法实现放入执行 alloc 和 init 的类中:
...
alarmPicker.scrollViewDelegate = self;
...
但这将是一个非常糟糕的解决方案。
为了告诉AlarmPicker实例它应该将自己用作其委托,我必须做什么?