我有主控制器:
@interface BallsViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *InfoLabel;
@property (weak, nonatomic) IBOutlet UIButton *nextBallButton;
@property (weak, nonatomic) IBOutlet ViewBoard *viewBoard;
- (IBAction)addNextBalls:(id)sender;
@end
ViewBoard是我绘制的UiView。有时我想发送用户无法再绘制的控制器信息。此信息将设置为标签,用于绘制的按钮应禁用。
如何以正确的mvc方式实现这一目标?
答案 0 :(得分:1)
您希望从视图向视图控制器发送信息,关于是否启用了绘图,对吗?它不会真正匹配MVC模式,因为在该模式中,您的视图对象不应该修改程序的状态,但是哦。让我们使用常见的iOS / Mac OS模式:
为您的视图定义委托协议,例如
@protocol ViewBoardDelegate
- (void)viewBoardDrawingDidEnable:(ViewBoard *)sender;
- (void)viewBoardDrawingDidDisable:(ViewBoard *)sender;
@end
无论如何都是这样的。现在让视图控制器支持委托协议并使视图控制器成为ViewBoard的委托。当viewBoard想要更改启用状态时,它可以使用委托方法,例如:
[self.delegate viewBoardDrawingStateDidEnable:self];
或
[self.delegate viewBoardDrawingStateDidDisable:self];
答案 1 :(得分:0)
在您的实施中:
-(void)stopDrawing{
nextBallbutton.enabled= false;
//more code you need
}
每当需要停止绘图时,请调用此方法。如果需要viewBoard
调用,则在其中添加对BallsViewController的弱引用并向其发送消息。