0

iPhone の開発を始めたばかりで、根本的な何かを見逃しているようです。

ビューベースのアプリケーションでは、ViewController 実装ファイルに UIView サブクラスをプログラムで追加し、値を設定できます。

- (void)viewDidLoad {

    [super viewDidLoad];

 CGRect myRect = CGRectMake(20, 50, 250, 320);

 GraphView *graphView = [[GraphView alloc] initWithFrame:myRect];

 [self.view addSubview:graphView];

    graphView.myString = @"Working here";

}

同じファイル内のアクションで同じ値を変更しようとすると、graphView が宣言されていないためビルドが失敗します。

- (void)puschButton1 {


 graphView.myString = @"Not working here";

}

UIView サブクラスを使用しているため、GraphView インスタンスのアウトレットはありません。

サブビューへの参照を取得するにはどうすればよいですか? または、これは別の方法で行う必要がありますか?

前もって感謝します

フランク

4

2 に答える 2

0

graphViewクラス変数として 保存できます。

編集:オブジェクトの保持カウントが増加することに注意してaddSubviewください。クラスのどこかで、allocareleaseaddSubviewaremoveFromSuperviewまたは aのバランスを取る必要がありますrelease

于 2010-02-14T22:24:15.690 に答える
0

最も簡単な解決策はgraphView、View Controller で宣言する代わりに、View Controller のインスタンス変数を作成することですviewDidLoad

.hファイルに次のようなものを入れます。

@class GraphView;

@interface MyViewController : UIViewController {
    GraphView *graphView;
}

// ... method declarations ...

@end

それをしたくない場合は、別の方法としてgraphViewのプロパティを設定し、必要なときにtagスーパービューのメソッドを呼び出してビューを取得します。viewWithTag:

「UIView サブクラスを使用しているため、GraphView インスタンスのアウトレットがありません」という意味がわかりません。通常、コントローラー クラスでアウトレットを宣言します。 のサブクラスを使用しているかどうかは問題ではありませんUIView

余談ですが、おそらくreleaseあるGraphView時点でそれを行う必要があることに注意してください。そうしないと、メモリリークが発生します。

于 2010-02-14T22:24:36.523 に答える