スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]UISplitViewControllerからUIViewControllerへ遷移するためのSegue

前回の[iOS]UIViewControllerからUISplitViewControllerへ遷移するためののSegueの逆を行うCustomSegueのソースです。

しかし今回何故これがきれいに動いたかは謎です。(本当に訳がわかりません)
おそらくなのですが、無理やり作られたUISplitViewControllerが多数の潜在するビューやアニメーションの仕組みに多大な悪影響を及ぼしているとしか言えません。(現在も膨大な情報をネット上から探していますが根本的な解決法が全く見つかりません)

ですので今回のはこういう考え方で実行しました。
・戻る時のアニメーションのために一度UISplitViewControllerをrootViewControllerから外す(そのためのnil代入アニメーション)
・このアニメーション後に即座に別アニメーションとしてrootViewControllerにUIViewControllerへの遷移アニメーションを食い込ませる

と考えました。すごい無理やりです。
UISplitViewController作った作者はもうちょっとこのUIに対する情報を残してくれないと本当に使いにくいです。
全く多様性が無いです。
(私が丸3日、xcodeを開いてから何も打ち込まずひたすらネットサーフィンさせた凶悪なUIです。)

ではソースです。
//この時のファイル名をSplitViewFlipSegueとしています。
#import "ViewFlipSegue.h"

@implementation ViewFlipSegue
- (void)perform {
//sourceViewController:遷移前のコントローラ
//destinationViewController:遷移後のコントローラ
UIViewController *sourceViewController = (UIViewController *)self.sourceViewController;
UIViewController *destinationViewController = (UIViewController *)self.destinationViewController;

UIWindow *window = [UIApplication sharedApplication].keyWindow;

[UIView transitionWithView:sourceViewController.view.window
duration:0.5f
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
/***************************************************
//iOS3.x系まで
[window addSubview:destinationViewController.view];
***************************************************/
//iOS4.x系から
window.rootViewController = nil;
}
completion:nil];

[UIView transitionWithView:sourceViewController.view.window
duration:0.5f
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:nil
completion:^(BOOL finished){
//アニメーション終了後の処理
window.rootViewController = destinationViewController;
}];

}
@end


このUISplitViewControllerというコントローラは今もMPMoviePlayerControllerのフルスクリーンとの競合で悩んでいますが、まことに使いにくいことこの上ないです。
くれぐれも変則的な利用をする際は、大きく時間を割いて臨むか、MGSplitViewControllerやAPSplitViewControllerなどの類似するスプリットビューの利用をご検討ください。私はそろそろ絶命しそうです。
このエントリーをはてなブックマークに追加

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。