3

私はiPhoneアプリのインターフェースで働いています。さまざまなビューに繰り返しオブジェクトがあることを認識したので、親 ViewController を作成したいと思います。しかし、子ViewControllerからこの親ViewControllerのプロパティにアクセスしたい場合、いくつかの問題が発生します。具体的には、各ビューに一般的な ProgressView を配置したいのですが、ビューが表示されたときに非表示にしたいです。子ViewControllerからProgressView.hiddenにアクセスしてProgressViewを表示すると、エラーメッセージは表示されませんが、実行中のプログラムでは何も起こりません。

私のコードは次のようになります。

ParentViewController.h:

#import <UIKit/UIKit.h>

@interface ParentViewController : UIViewController{
    UIProgressView *progressView;
}

@property (readwrite) UIProgressView *progressView;

@end

ParentViewController.m:

- (void)viewDidLoad
{

    CGRect progressViewFrame = CGRectMake(0, 407, 320, 9);
    progressView = [[UIProgressView alloc] initWithFrame:progressViewFrame];
    progressView.hidden = TRUE;
    [self.view addSubview:progressView];

    [super viewDidLoad];
}

ChildViewController.h:

#import <UIKit/UIKit.h>
#import "ToolbarViewController.h"

@interface ChildViewController : ParentViewController

@end

ChildViewController.m:

- (void)viewDidLoad
{   
    progressView.hidden = FALSE;

    [super viewDidLoad];
}

このようにすると、ProgressView バーは非表示のままになり、エラーは発生しません。また、viewDidLoad メソッドが呼び出されたかどうかも確認しました。はい、呼び出されます。

あいさつ C4rmel

4

2 に答える 2

4

を呼び出すprogressView.hidden = FALSE;前に を呼び出す[super viewDidLoad];と、progressViewはまだ初期化されていません。それはまだnilであるため、割り当ては効果がありません。

于 2012-07-08T16:59:53.210 に答える
3

ChildViewController.m で、関数呼び出しシーケンスが正しくありません。以下の方法で変更します。

- (void)viewDidLoad
{   
    [super viewDidLoad];
    progressView.hidden = FALSE;    
}

ここで super を呼び出すと、progressView が作成されます。その後、非表示にすることができます。そうしないと、作成されていないビューが非表示になります。

于 2012-07-08T16:59:36.790 に答える