1

首先,我想说我才刚刚开始“学习”objective-c。对不起,如果我犯了大错

我试图-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component从视图 2 委托给视图 1 ...

查看 1.h:

@interface ViewController : UIViewController <PopOverViewControllerDelegate>

查看 1 米:

-(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 米:

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
  inComponent:(NSInteger)component{

[self.delegate pickerView:categoryPicker didSelectRow:row inComponent:component];

}

这没用...

4

2 回答 2

1
  1. 一个视图成为另一个视图的代表有点奇怪。视图实际上不应该对数据了解太多——控制器通常会做出委托所需的各种决策。

  2. 与其让一个委托 (View1) 将选取器的委托消息传递给另一个委托 (View2),不如让 View2 成为选取器的委托?看起来你让事情变得比他们需要的更复杂。

  3. 请告诉我们更多关于这个问题的信息,而不是“它不起作用”。如果它奏效了,你一开始就不会问。告诉我们它是如何不起作用的。View2 中的方法是否被调用过?如果是,那么问题出在哪里?如果没有,为什么不呢?View1 中发生了什么导致它不调用 View2?

于 2012-05-04T18:12:16.330 回答
0

要将 传递delegate给不同的class,您只需将委托设置UIPickerView为您的 another class。在您的类 2 中定义delegate您要处理的方法,并在 .h of class2 中确认UIPicklerView delegate。然后在class1 你只需要写这一行 -

[pickerView setDelegate:class2];

上一行pickerView是对的引用,UIPickerView并且class2是对实例的引用class2

另请查看@Caleb 答案。我完全同意他的看法。通过做上述事情,你会让事情变得更复杂。

于 2012-05-04T18:13:59.967 回答