で選択テーブルビューセルを維持ユーザがUITableView
で細胞を選択した場合、私はUIPopover
を示します。ポップオーバーが解除されるまで、セルは選択されたままです。アプリ:アプリ画面
ユーザがデバイスを縦向きから横向きに回転させ、選択されたセルが画面の下部にある場合、回転後に消滅し、ポップオーバーが別の(無関係な)セルを指してしまいます。
は、どのように私は、画面上UITableView
滞在中、選択セルが横向きに肖像画から回転したときにことを確認することができますか? UIPopover
を再配置するに
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect activeCellRect = [self.tableView rectForRowAtIndexPath:self.indexPath];
if ((activeCellRect.origin.y + activeCellRect.size.height) >
(self.view.frame.origin.y + self.view.frame.size.height))
{
// If a row ends up off screen after a rotation, bring it back
// on screen.
[self.tableView scrollToRowAtIndexPath:self.indexPath
atScrollPosition:UITableViewScrollPositionBottom
animated:YES];
}
}
アップデート2、::
更新:はカレブのとkviksilverのコードを組み合わせることで、次は、実用的なソリューションであるスクロール命令した後、reloadData
メッセージを送信する必要がありますテーブルビューに移動します。その後rectForRowAtIndexPath:
方法は正しくセル(そうでなければ、それはないスクロール・コマンドの後に正しく更新されないであろうと)の新しい位置を報告します!姿勢の変化に
1:atScrollPosition:アニメーション:. – Caleb
あなたのコードをありがとうございますが、まだ問題があります: '[self.tableView indexPathsForVisibleRows]'はローテーションの後にrows配列の "reduced"サイズを返しません。しかし、Calebが '-rectForRowAtIndexPath:'メソッドを使うという提案はうまくいきます。 – user8472