0

PXListView と NSScrollView のセットアップをうまく機能させるのに非常に苦労しています。その要点は次のとおりです。

2 つの PXListView を含むダッシュボード ページがあります。そのうちの 1 つは Core Data からデータを取得し、もう 1 つは RSS フィードからデータを取得します。これらは両方とも、スーパービューと関連するコントローラーに追加されます (私はダッシュボード以外のモードを持っているので、これが最も効率的な方法でした)。このスーパービューは、NSScrollView の documentView になります。

RSS フィード ベースのリスト ビューを除いて、これらすべてをうまく機能させることができます。UI を保持しないように非同期でフィードを取得しています。フィードが受信されてリスト ビューにデータが入力されると、自動的にサイズが変更されます。これはすべてうまく機能しますが、スクロールバーを表示するには、ダッシュボード ビューのサイズを変更する必要があります。そのため、作成した autosizeView メソッドにつながる通知を送信しましたが、すべてがうまくいきません。

2 つの ListView がオーバーラップし始め、上部の内容が下部の内容になります。以下のスクリーンショット (赤は境界の四角形、青は各サブビューのフレーム)

これは、autosizeView を呼び出す前です。ここに画像の説明を入力

これはそれを呼び出した後です: ここに画像の説明を入力

参考までに、PXListViews のサイズを変更し、DashboardView の autosize メソッドを呼び出さない場合は、次のようになります。 ここに画像の説明を入力

ご覧のとおり、autosizeViews を呼び出さない限り問題なく動作しますが、スクローラーが発生しません。ここに私の autosizeView メソッドがあります:

-(void)autosizeView
{
    //Resize the view to accommodate all subviews
    NSRect oldFrame = [[self view] frame];
    CGFloat lastY = [_activityView frame].origin.y;
    if (lastY < 0) {
        CGFloat newHeight = oldFrame.size.height + (-lastY);
        [[self view] setFrameSize:NSMakeSize(oldFrame.size.width, newHeight)];
    }
}

このすべてが、DashboardView のサイズを変更したときに座標が台無しになり、そのサブビューの起源がうまくいかないことに関係していると推測しています。

どんな助けでも大歓迎です!!!

4

1 に答える 1

0

さて、私はそれを解決しました。スーパービューのサイズが変更されると、PXListView の高さが自動的に変更されるため、不具合が発生したことが判明しました。setAutoresizeMask: を使用する簡単な変更が必要でした。それはいつも簡単なことですよね?

于 2011-04-06T00:53:25.207 に答える