从其他uiview设置主uiview的控件属性

时间:2013-04-03 17:59:20

标签: objective-c

我有主控制器:

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

2 个答案:

答案 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的弱引用并向其发送消息。