0

現在、ほぼ完全に完了したテスト用のアプリがあります。バグ修正がいくつか残っています。残念ながら、顧客は、アプリのメインページ全体をスクロールビュー内に配置することを決定しました(下部にテーブル用のスペースを確保するため)。私はすでにすべてを設定しているので、すべてを移動したり参照を変更したりしたくはありません。メインビューのクラスをスクロールビューに変更する簡単な方法はありますか?initすでにIBでクラスを変更し、メソッドでクラスタイプを設定してみました。ない場合は、ビューの上部をnibファイルにスローして、カスタムセルとしてロードします。

-編集-私はIBのクラスタイプを変更してから実行することになりました

[(UIScrollView *) self.view setScrollEnabled:YES];
[(UIScrollView *) self.view setContentSize:CGSizeMake(0,2000)];

viewDidLoad。助けてくれてありがとう、私があなたのすべての答えを受け入れることができたらいいのに。

4

4 に答える 4

1

あなたが言及しているとき[self view]、私はあなたがビューコントローラで意味していると仮定するつもりです。ビューコントローラのビューは、UIViewから派生した任意のビューにすることができます。したがって、スクロールビューは完全に受け入れられます。

I don't really want to move everything and change references.

何を動かさなければなりませんか?なぜ参照を変更する必要があるのでしょうか。必要なのは、View Controllerにスクロールビューを追加し、View Controllerビューを設定して、現在のビューをサブビューとして新しいスクロールビューに追加することだけです。参照を変更する必要はなく、移動する必要もありません。

于 2012-07-30T16:35:24.007 に答える
1

View ControllerのドキュメントのloadViewメソッドを参照してください。

これは簡単な (テストされていない!) 例です。

- (void)loadView {
   UIScrollView *scrollView = [[UIScrollView alloc] init] autorelease];

   //Set the properties of scrollview appropriately....

   self.view = scrollView;
 }

これで、View Controller のルート ビューがスクロール ビューになります。

- ドキュメントに記載されているように、インターフェイス ビルダーを使用してビュー/ビュー コントローラーを初期化する場合は、これを行わないでください。これが事実であるかどうかは、あなたの説明からはわかりませんでした。そうであれば、インターフェースビルダーでビュータイプを変更できるはずです。

于 2012-07-30T17:07:07.923 に答える
1

contentSizeスクロールビューのプロパティを設定する必要があります。

IB を使用しているため、これを行う最も簡単な方法は、すべての UI 要素をビューに配置し、この単一のビューをスクロール ビューに追加することです。このviewDidLoadメソッドでは、スクロールビューのコンテンツ サイズをすべての UI を含むビューと同じサイズに設定します。

余談ですが、あなたがしているように、ビュー階層をたどるよりもビューを参照する方がはるかに簡単な方法があります。viewcontroller.view.something.tableview. IB のビュー コントローラーからテーブルビューへの接続を追加すると、そのテーブルビューがビュー階層のどこにあるかは関係ありません。viewcontroller.tableviewペン先をどのように再配置しても、いつでも からアクセスできます。

于 2012-07-30T17:19:39.673 に答える
0

適切な型のポインターを使用する必要があると思います。Google マップの例: ベース ビューのクラスを に変更したとしますGMSMapView

MapViewController.h

@property GMSMapView *mapView;

MapViewController.m

-(void)awakeFromNib{
    [super awakeFromNib];
    self.mapView = (GMSMapView*)self.view;
    // ... etc.
}
于 2014-02-25T08:46:46.110 に答える