3

アプリをiOS6に移植していますが、分割ビューコントローラーでのマスタービューコントローラーの表示のオンとオフをトリガーするためにデバイスを使用していたソリューションが、iOS6では機能しなくなったことがわかりました。

これは、iOS6でデバイスが回転した場合にのみ機能するアクションをトリガーするために使用したコードです。

- (void)hideMaster:(BOOL)hide {

[self clearOverlay];

UISplitViewController* spv = appDelegate.splitViewController;

NSLog(@"hidemaster: I do %@show the master", (hide?@"not ":@""));

self.hiddenMaster= hide;

NSLog(@"delegate=%@", spv.delegate);

[spv.view setNeedsLayout];
spv.delegate=nil;

spv.delegate=self;

}

- (BOOL)splitViewController:(UISplitViewController*)svc shouldHideViewController: (UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation {

NSLog(@"Spv: I do %@show the master", (self.hiddenMaster?@"not ":@""));

return self.hiddenMaster;
}

ユーザーがデバイスを回転させずにshouldHideViewControllerコールバックを強制的にトリガーするにはどうすればよいですか?

ありがとう、Fabrizio Bartolomucci

4

4 に答える 4

5

予想よりも簡単:[spv.viewsetNeedsLayout]を配置しました。関数を呼び出した直後に、それは完全に仕事をします。これは、他のユーザーの利益のための完全なコードです。

- (void)hideMaster:(BOOL)hide {
   NSLog(@"hide-unhide master");
   UISplitViewController* spv = appDelegate.splitViewController;
   spv.delegate=self;
   self.hiddenMaster= hide;
   [spv willRotateToInterfaceOrientation:self.interfaceOrientation duration:0];
   [spv.view setNeedsLayout];
}

- (BOOL)splitViewController:(UISplitViewController*)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation {
   NSLog(@"Spv: I do %@ show the master", (self.hiddenMaster?@"not ":@""));
   return self.hiddenMaster;  
}
于 2012-09-28T16:04:56.677 に答える
1

それ以外の

spv.delegate=nil;
spv.delegate=self;

あなたがする必要があります

[spv willRotateToInterfaceOrientation:self.interfaceOrientation duration:0];

そしてあなたは幸せになるでしょう。

于 2012-09-24T16:42:36.163 に答える
0

この問題を解決する方法はありません。Appleでさえ白い旗を表示しました。すべてのビューをポップアップとして表示するようにアーキテクチャを変更し、分割ビューコントローラを完全に削除しました。自動レイアウトの導入をこれ以上遅らせることはできませんでした。

于 2014-05-26T09:25:14.210 に答える
0

私はついに、ユーザーの指示に従ってのみ開くことを提案しているAppleのドキュメントに従って、それを取り除きました。今、私はユーザーが実際に手動で開いたセカンダリパネルのためだけにそれを復元し、iPhoneバージョンよりも巻き戻しセグエによって管理されています。

于 2015-08-11T13:57:16.987 に答える