У нас есть пользовательская реализация QLPreviewController, поэтому мы можем управлять кнопками, представленными пользователю, и их действиями. Я добавил следующий код viewWillAppear
метод пользовательского класса:Наследует QLPreviewController, сменил кнопки на navigationItem сбрасываются после нажатия «Главная»
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(openWithPressed:)];
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissPressed:)];
[self.navigationItem setRightBarButtonItem:rightBarButtonItem];
[self.navigationItem setLeftBarButtonItem:leftBarButtonItem];
[rightBarButtonItem release];
[leftBarButtonItem release];
}
просмотрщик действительно появляется с нашими пользовательские кнопки, и они работают, как и ожидалось.
Наша проблема возникает, когда пользователь нажимает кнопку «Главная». Он устанавливает, что метод UIApplication.doEvents
вызывает методы кнопки set navigationItem
и сбрасывает их до исходных значений (с помощью исходных обработчиков).
Как я могу предотвратить это, или обрабатывать эти события самостоятельно, и перезаписать их своими собственными кнопками?
Спасибо за идею. Я использовал уродливое обходное решение до сих пор, с флагом, переписывая получателя nativeItem и возвращаю фиктивный объект, чтобы ОС не изменила реального. Мне это действительно не понравилось. Ваше решение действительно намного элегантнее. –