0

こんばんは、問題です [self.view addSubview:pauseView]; 現在のビューにpauseViewがロードされる前に、BOOL isPausedがfalseに変わり、サブビューが表示されます。一時停止ビューを使用して変数の値を false に変更しようとしていますが、現在のクラスにないため、これを行うことができません。このトピックはすでにスタックオーバーフローでカバーされていることは知っていますが、まだ問題を解決できません。この問題を解決できれば、私の他の 3 つのアプリでも同じ種類の問題が解決されます。

よろしくお願いします。

4

2 に答える 2

0

isPausedを定義するクラスのプロパティとしてisPausedを定義します(MasterViewと呼びましょう)。


// inside MasterView.h
@property (nonatomic,assign) BOOL isPaused;

次に、サブビューpauseViewをカスタムUIViewサブクラス(PauseViewと呼びましょう)にし、このサブクラスで、MasterViewタイプのmasterというプロパティを定義します。


// inside PauseView.h
@property (nonatomic,assign) MasterView *master

次に、pauseViewを割り当て/初期化するときに、次のプロパティを設定します。


// somewhere inside MasterView.m
PauseView *pauseView = [[PauseView alloc] initWithFrame:frame];
pauseView.master=self;

最後に、PauseViewクラスで、isPausedプロパティを変更するコードのポイントで、次のようにします。


// somewhere in PauseView.m
master.isPaused=YES
于 2011-02-10T20:32:55.150 に答える
0

アーキテクチャについて考え、アプリケーションロジックをUIViewからコントローラーに戻してみる必要があります(つまり、デリゲートは良いオプションかもしれませんが、コードと何を達成しようとしているのかを確認しないとわかりません。 )。

UIViewから変数を操作することを主張する場合は、初期化するときにviewControllerの参照をpauseViewに渡す必要があります。

したがって、PauseViewクラスで、カスタムイニシャライザーを作成します。

-(id)initWithFrame:(CGRect)frame andViewController:(id)vc {
   self = [super initWithFrame:frame];
   if (self) {
       // Any other custom initialisation here
   }
}
于 2011-02-10T20:34:24.790 に答える