ios:代表没有回应

时间:2013-08-14 13:27:58

标签: ios delegates

我正在尝试创建我的第一个代表,这是我正在尝试做的事情

在名为PAStepper.h的课上我做了这个

@class PAStepper;
@protocol StepperDelegate <NSObject>

@required
-(void)didIncrement;
-(void)didDecrement;


@end

@interface PAStepper : UIControl
{
    __weak id <StepperDelegate> stepperDelegate;
}
@property (nonatomic, weak) id <StepperDelegate> stepperDelegate;
@end

并合成了.m文件中的属性

然后在方法

中将以下内容放入PAStepper.m中
[self.stepperDelegate didDecrement];

在控制器中我想带代表我做了这个

·H

@interface OCSideCartViewController : UIViewController<StepperDelegate>

的.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    PAStepper *stepper = [[PAStepper alloc]init];
    stepper.stepperDelegate = self;
}



-(void)didIncrement{
    NSLog(@"inc");
}
-(void)didDecrement{
    NSLog(@"dec");

}

知道这个类是viewController,它包含一个表,每个单元格都有PAStepper ..所有我想要的是每当我按下按钮时委托调用didIncrement和didDecrement

3 个答案:

答案 0 :(得分:1)

当你调用这个方法时

[self.stepperDelegate didDecrement];

NSLog你stepperDelegate并确保它不为null。你能否确认调用你的委托的方法?

答案 1 :(得分:0)

你可以在你的pastapper.h文件中调用它

if ([stepperDelegate respondsToSelector:@selector(didIncrement)])
{
    [stepperDelegate performSelector:@selector(didIncrement)];
}

答案 2 :(得分:0)

我无法下载项目,所以我猜...

Interface Builder中的步进器是什么? 如果是,您不必分配它。

  1. 在OCSideCartViewController中建立步进器的插座连接。
  2. 在OCSideCartViewController中发布:

  3. - (void)viewWillAppear:(BOOL)animated{     
         self.stepper.stepperDelegate = self;
         [super viewWillAppear:animated];
    }
    

    如果Stepper不是Outlet,则必须在设置边界后将其添加到ViewControllers视图中。