0

我有主控制器:

@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 方式实现这一点?

4

2 回答 2

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];
于 2013-04-03T18:10:22.193 回答
0

在您的实施中:

 -(void)stopDrawing{
nextBallbutton.enabled= false;
 //more code you need
}

每当您需要停止绘图时调用此方法。如果这需要由 调用viewBoard,则在其中添加对 BallsViewController 的弱引用并向其发送消息。

于 2013-04-03T18:05:05.320 回答