0

でチャートを描きたいUIView。問題は、ビューにデータ(ポイント)を取得する方法です。プロトコルを作成し、デリゲートメソッドを呼び出すUIViewControllerデリゲートとしてを設定した場合( ?は早い可能性があり、デリゲートは設定されていない可能性がありますか?しかし、ビューはコードで100%作成されているため、ペン先はありませんファイル) ..UIViewinitWithFrameawakeFromNib

4

3 に答える 3

3

initWithFrame? 早すぎる可能性があり、デリゲートが設定されていない可能性があります。

実際、割り当て後にオブジェクトで最初に行うことは初期化であるため、デリゲートを設定することはできませんinitWithFrame:。つまり、 init メソッドが戻るまで、呼び出すことはできませんしたがって、少なくとも) 他の方法。

あなたがしなければならないことは、デリゲートが自分自身をビューのデリゲートとして設定した後に明示的に呼び出す必要があるloadDataorメソッドを持つことです。reloadDataつまり、View Controller から、次のように呼び出すことができます。

@implementation ChartViewController

- (id)init
{
    if ((self = [super init])) {
        chartView = [[ChartView alloc] initWithFrame:self.view.frame];
        chartView.delegate = self;
        [self.view addSubview:chartView];
        [chartView reloadData];
    }
    return self;
}

次に、チャート描画ビューで、次のように実装- reloadDataします。

- (void)reloadData
{
    // Call the delegate here,
    // then do the drawing
}
于 2012-11-18T12:56:27.903 に答える
0

より良い方法は、UIViewControllerの代わりに使用することUIViewです。そのビューはデータを管理する必要があるためです。データの管理は UIViewController の仕事です。

于 2012-11-18T12:57:29.020 に答える
0

プロトコルを作成しますが、デリゲートとは呼ばないでください。それを dataSource と呼びます:D

とにかく、最初にデータが必要になったときに呼び出します....できるだけ遅く.. initではなく..おそらくsetDataSource呼び出しで呼び出します。

または、初めて描画してデータがないことがわかったとき..


UITableView を見て、彼がどのようにそれを行うかを確認し、それを模倣します

于 2012-11-18T12:50:14.327 に答える