首先,我想说我刚开始“学习”目标-c。对不起,如果我犯了大错误
我试图将-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
从视图2委托给视图1 ...
查看1.h:
@interface ViewController : UIViewController <PopOverViewControllerDelegate>
查看1.m:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component{ //stuff here}
查看2.h:
@protocol PopOverViewControllerDelegate <NSObject, UIPickerViewDelegate>
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component;
@end
@interface PopOverViewController : UIViewController <UIPickerViewDataSource>
查看2.m:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component{
[self.delegate pickerView:categoryPicker didSelectRow:row inComponent:component];
}
它不起作用......
答案 0 :(得分:1)
视图成为另一个视图的委托有点奇怪。视图真的不应该对数据了解多少 - 控制器通常会做出代表所需的各种决策。
不是让一个委托(View1)将选择器的委托消息传递给另一个委托(View2),为什么不将View2作为选择器的委托呢?看起来你的事情比他们需要的更复杂。
请告诉我们有关此问题的更多信息,而不是“它不起作用”。如果它奏效了,你首先就不会问。告诉我们 它不起作用。 View2中的方法是否被调用?如果是,那么问题是什么?如果不是,为什么不呢? View1中会发生什么导致它不能调用View2?
答案 1 :(得分:0)
要将delegate
传递给其他class
,您只需将UIPickerView
的代理设置为另一个class
。在您的第2课中,定义您要处理的delegate
方法,并在class
的.h中确认UIPicklerView
delegate
。然后在class
1中你只需要写这一行 -
[pickerView setDelegate:class2];
上面一行pickerView
中的是UIPickerView
的引用,而class2
是对class2
的实例的引用。
另请查看@Caleb的答案。我完全同意他的观点。通过做上述事情,你会让事情变得更复杂。