9

アプリでビュー間を遷移する際に TransitionfromView を使用すると問題が発生します。

設定

これはView Controllerの基本設定です。その中には 2 つのビューがあります。MKMapView と UITableView。トグル ボタンを押すと、地図と表が交互に表示されるようになっています。

これは私の *.h ファイルです

@interface BrowseBeaconsViewController : UIViewController <UITableViewDelegate, MKMapViewDelegate, UITableViewDataSource, CLLocationManagerDelegate >
{

__weak IBOutlet UIBarButtonItem *refreshBeacons;
__weak IBOutlet UIBarButtonItem *toggleView;
MKMapView* beaconMapView;
__weak IBOutlet UITableView* beaconTableView;
}

そのため、マップビューがプログラムで作成されている間、テーブルビューはストーリーボードから取得されます。

問題

[UIView transitionFromView:beaconTableView toView:beaconMapView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {}];

MapView から TableView に移行すると、テーブルビューの値は null (0x0000000) になります。transitionfromview の動作は、親ビューからビューを削除することだと理解しています。しかし、トランジション後にテーブルビューをサブビューとして追加しようとすると、値がnullであるため機能しません。だから私の質問は、ビューがnullの場合、移行後にテーブルビューを追加するにはどうすればよいですか?

PS: これが単純な質問である場合は申し訳ありませんが、私は iOS プログラミングが初めてで、この質問を投稿する前にフォーラムを調べようとしました。

4

3 に答える 3

30

その方法に関するドキュメントから:

「デフォルトでは、fromView のビューはビュー階層で toView のビューに置き換えられます。両方のビューが既にビュー階層の一部である場合は、オプション パラメータに UIViewAnimationOptionShowHideTransitionViews オプションを含めて、単純に非表示または表示することができます。」

したがって、両方のビューを残したい場合は、beaconMapView をビュー階層に追加し、UIViewAnimationOptionShowHideTransitionViews オプションを含めます。

于 2013-01-08T18:23:49.203 に答える
2

beaconTableView への個別の参照を保持するか、単純に弱いものではなく強いものとして宣言する必要があります。beaconTableView は弱いと宣言されているため、iOS 5+ は、beaconTableView への他のすべての参照が削除された後 (この場合は親ビューから削除することによって) ぶらぶらする必要がないことを理解しています。

于 2013-01-08T16:48:59.733 に答える