不能使用授权在类之间进行通信

时间:2017-07-17 08:12:16

标签: ios objective-c

我有具有颜色参数的模型类,以及也有UIColor的视图类。使用委托如何在模型中更改时更改视图颜色。

//Model.h

@class Ball;
@protocol BallDelegate <NSObject>

-(void)ball:(Ball*)ball wasColorChanged;

@end

@interface Ball : NSObject

@property UIColor* color;
@property (weak) id <BallDelegate> delegate;

@end

现在,我如何将值传递给我的视图,如何调用它。

2 个答案:

答案 0 :(得分:0)

model.m

[self.delegate wasColorChanged]   // call this at the time of color change

在ViewController或任何可以接收事件的地方

ViewController.m

@interface ViewController ()<BallDelegate>  // Set ballDelegate in interface

设置您创建对象的代理

myBallModel.delegate = self;   // set it where you created your object

并在 viewController.m

中添加委托功能
-(void)ball:(Ball*)ball wasColorChanged {
   // You will receive the color change event here
}

答案 1 :(得分:0)

你可以这样做:

@protocol Ball

- (void)setColor:(UIColor *)color {
    // set new color
     _color = color;
    // tell the delegate about new color
    if ([self.delegate respondsToSelector:@selector(ball: wasColorChanged:)]) {
        [self.delegate ball:self wasColorChanged:color];
    }
}

@end

另外,不要忘记在之前设置代理。