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 パターンでは、ビュー オブジェクトがプログラムの状態を変更してはならないため、MVC パターンと実際には一致しませんが、まあまあです。代わりに、一般的な iOS/Mac OS パターンを使用しましょう。

次のように、ビューのデリゲート プロトコルを定義します。

@protocol ViewBoardDelegate
- (void)viewBoardDrawingDidEnable:(ViewBoard *)sender;
- (void)viewBoardDrawingDidDisable:(ViewBoard *)sender;
@end

とにかくそのようなもの。次に、View Controller がデリゲート プロトコルをサポートするようにし、View Controller を 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 に答える