0

在我的 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实例它应该将自己用作其委托,我必须做什么?

4

1 回答 1

1

是否有某些原因不能只returnScrollView.delegate = self在 AlarmPicker 类中编写?

我看不出你的 scrollViewDelegate 成员为什么会在此处为 nil 的任何原因,除非该行returnScrollView.delegate = self.scrollViewDelegate;发生在你的 init 方法中,在这种情况下,你可以将它移到稍后的方法或在 AlarmPicker 的 init 方法中传递所需的委托。

于 2012-06-30T18:28:05.490 回答