1

このチュートリアル - http://www.markbetz.net/2010/09/30/ios-diary-showing-an-activity-spinner-over-a-で UITableView のオーバーレイ アクティビティ インジケーターを実装しようとしています。 uitableview/

少し古いかもしれませんが、オーバーレイを表示する境界に関する小さな問題を除けば、うまく機能しているようです。

私はここでそれらの境界を取得しようとします:

-(void)showActivityView {
    if (overlayController == nil) {
        // This is where I get the wrong bounds
        overlayController = [[ActivityOverlayController alloc] initWithFrame:self.tableView.bounds];
    }
    [self.tableView insertSubview:overlayController.view aboveSubview:self.tableView];
}

そして、テーブルがロードされていっぱいになった後にメソッドを呼び出すと、境界が取得され、オーバーレイが完全に表示されますが、間違った境界を取得する前に呼び出すと、オーバーレイが完全に表示されます。tableView.superView の境界を取得しようとしましたが、これは左上隅にオーバーレイを表示するだけです。

これは、ロードする前に UITableView にセルが含まれていないため、適切な境界がまだないためであると理解していますが、これらを取得する方法はわかりません。

間違った表示:

ここに画像の説明を入力

正しい (ただし、テーブルをロードした後) 表示:

ここに画像の説明を入力

4

2 に答える 2

0

「境界」ではなく、UITableView の「フレーム」プロパティを使用するのはどうですか? Table View が XIB で定義されている場合、セルをテーブルにロードする前に、フレームはすでに問題ないはずです。したがって、次のように置き換える必要があります。

    overlayController = [[ActivityOverlayController alloc] initWithFrame:self.tableView.bounds];

と:

    overlayController = [[ActivityOverlayController alloc] initWithFrame:self.tableView.frame];
于 2012-08-04T11:55:13.540 に答える
0

あなたがすべきリンクの例によると

-(void)showActivityView {
    if (overlayController == nil) {
        // This is where I get the wrong bounds
        overlayController = [[ActivityOverlayController alloc] initWithFrame:self.tableView.superview.bounds];
    }
    [self.tableView.superview insertSubview:overlayController.view aboveSubview:self.tableView];
}  

[self.tableView insertSubview:..]なぜ代わりにやっているの[self.tableView.superview insertSubview:..]ですか?

于 2012-08-04T12:59:14.480 に答える