2011-07-19 11 views
0

UIViewControllerがメモリに読み込まれているかどうかを確認する方法はありますか?このようなCocoa-Touch:UIViewControllerが存在するかどうかをチェックしてください。

何か:

if([ContentRvController exists]){ 
    contentView *ContentRvController = [[contentView alloc] 
     initWithNibName:@"contentView" bundle:nil]; //ContentView is a custom UIViewController 
    .... 
    //Code to set the UIViewController 
    .... 
} 
else{ 
    [ContentRvController release]; 
} 

ボタンが(今ViewControllersを初期化していること)タップしたときに発生する必要があります。今すぐタップすると、n個のViewControllerを開くと、一度に1つしか表示されません。

あなたは私を助けてくれることを嬉しく思っています。

答えて

0

これは既存のコードに基づいていますか? クラスは大文字で開始する必要があります。インスタンスは大文字でなければなりません。

if([contentRvController exists]){ 
    ContentView *contentRvController = [[ContentView alloc] 
    initWithNibName:@"contentView" bundle:nil]; //ContentView is a custom UIViewController 
    .... 
    //Code to set the UIViewController 
    .... 
} 
else{ 
    [contentRvController release]; 
} 

それは、おそらく、すなわち

@interface SomeClass : NSObject { 

} 
@property(non-atomic, retain) ContentView *contentRvController; 
@end 

し、コードであなたが他の{[contentRvをしない、また

if(contentRvController!=nil){ 
    ContentView *aView=[[[ContentView alloc] init] autorelease]; 
    self.contentRvController=aView; 
} 

を行うことができますヘッダにそれを宣言する価値がありますリリース];}ビット、あなたがどこでもそれを自動リリースした場合、これはある時点でリークします。

+0

それはトリックを行うでしょう。 –

+0

ちょっとした問題です。そこに投稿するスニペットは、別のクラスからContentViewを呼び出します。 ContentViewが存在する場合はビューを非表示にし、それをnilに設定して解放しますが、ContentView自体には閉じるボタンがあり、タップすると同じように表示されます。 IBAction(ContentView内部)で 'self = nil;'が実際に作成されたContentViewをnilに設定しない(または少なくとも 'if(contentRvController = nil)'が実行されたときにfalseを返しますので、私は働くために発射ボタンを2回タップしなければなりません。 –

0

UINavigationControllerを使用している場合は、プロパティtopViewControllerを確認してください。

+0

いいえ、contentViewはaddSubViewで追加されました(ちょっと変わったかもしれませんが、シミュレートされたデスクトップ上にUIViewが浮かぶので、私が見つけられる唯一の方法でした。 –

関連する問題