Как обнаружить изменение поворота при возврате в tableView из detailView? - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть UITableViewController и DetailViewController, которые появляются при выборе конкретной строки.Проблема заключается в том, что tableView не вызывает метод didRotateFromInterfaceOrientation, когда вращение выполняется в DetailViewController.Это логично, однако мне нужно перезагрузить таблицу, если ориентация изменилась.

Я пытаюсь этот код, но он не работает:

- (void)viewWillAppear:(BOOL)animated{
  [super viewWillAppear:animated];
  if (self.interfaceOrientation != [UIDevice currentDevice].orientation){
    [self handleTableViewRotation];
  }
}

Я предполагаю, что должно быть какое-то свойство, которое содержит ориентацию tableView, которое не зависит от текущего свойства ориентации устройства...

1 Ответ

2 голосов
/ 16 сентября 2011

Возможно, самое элегантное решение - это кодирование протокола.Всякий раз, когда ваш DetailViewController входит в обратный вызов ротации, вызывайте reloadData метод вашего tableView.

Или ... вы можете продолжить этот путь.В этом случае вы должны сохранить последнюю ориентацию tableViewController как экземпляр var и сравнить его с текущим.После этого не забудьте установить новую ориентацию

РЕДАКТИРОВАТЬ: Сначала объявите новый протокол.

@protocol RotationDelegate

    - (void) didRotate;

@end

В вашем DetailViewController.h:

#import RotationDelegate.h

@interface DetailViewController : UIViewController {
    id <RotationDelegate> rotationDelegate;
}

@property (nonatomic, assign) id <RotationDelegate> rotationDelegate;

В DetailViewController.m:

@synthesize rotationDelegate;


-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{

    [rotationDelegate didRotate];

}

Теперь ваш ViewController, который содержит tableView:

@interface RootViewController : UITableViewController <RotationDelegate> {
    ...
}

И, наконец, реализует didRotate метод и вызов [yourTableView reloadData] внутри.Помните, что вы должны установить делегат вращения после инициализации вашего DetailViewController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...