Приложение iPhone вылетает, когда происходит возврат после попытки сохранить данные поиска - PullRequest
0 голосов
/ 19 января 2012

Я использую раскадровку для макета интерфейса предлагаемого приложения.У меня есть кнопка, которая переходит в контроллер табличного представления с контроллером панели поиска сверху.Я следую одному из самых простых примеров Apple о том, как выполнить поиск, найденный здесь .В этом примере используется один контроллер табличного представления, и данные поискового запроса сохраняются для последующего просмотра.Данные поиска сохраняются с использованием этого кода (я также включаю определения объектов):

@interface SearchTableViewController : UITableViewController {
  NSMutableArray *listOfLists;
  NSMutableArray *filteredListOfLists;
  NSString *savedSearchTerm;
  NSInteger savedScopeButtonIndex;
  BOOL searchWasActive;
}
@property (nonatomic, strong) NSMutableArray *listOfLists;
@property (nonatomic, strong) NSMutableArray *filteredListOfLists;
@property (nonatomic, copy) NSString *savedSearchTerm;
@property (nonatomic) NSInteger savedScopeButtonIndex;
@property (nonatomic) BOOL searchWasActive;
@end

- (void)viewDidDisappear:(BOOL)animated
{
  [super viewDidDisappear:animated];
  // save the state of the search UI so that it can be restored if the view is re-created
  self.searchWasActive = [self.searchDisplayController isActive];
  self.savedSearchTerm = [self.searchDisplayController.searchBar text];
  self.savedScopeButtonIndex = [self.searchDisplayController.searchBar selectedScopeButtonIndex];
}

Если я закомментирую три основные строки для сохранения данных, все будет работать как надо (за исключениемзапоминания статуса объекта поиска).Я думаю, что происходит то, что представление «разрушается» как часть перехода (возможно, до вызова метода viewDidDisappear), поэтому «self» больше не доступно.

Какой правильный / лучший способрешения этой проблемы?

1 Ответ

0 голосов
/ 19 января 2012

Как насчет

[[NSUserDefaults standardUserDefaults] 
   setValue:searchDisplayController.searchBar.text 
     forKey:"SavedSearchTerm"];

и

[[NSUserDefaults standardUserDefaults]
   valueForKey:"SavedSearchTerm"];

?

Выполнение этого в viewWillDisappear гарантирует, что объекты все еще там.

...