UIWebView поверх стека UINavigationController не отображается - PullRequest
0 голосов
/ 02 марта 2012

У меня есть UIViewController "PdfViewController" с представлением, содержащим UIScrollView, который содержит UIWebView, разработанный раскадровкой. Я использую раскадровку в Xcode 4.2 с ARC. Если я запускаю PdfViewController в качестве начального ViewController, веб-представление отображается, как и ожидалось. Я хочу, чтобы PdfViewController отображал PDF из списка PDF. Поэтому я создал NavigationController, содержащий TableViewController с заголовками документов. Если я пытаюсь показать PdfViewController с помощью «tableView didSelectRowAtIndexPath», представление остается черным и не загружает выбранный документ. Нет сообщения об ошибке из Xcode.

Вызываются viewDidLoad и viewWillAppear из PdfViewController.

Здесь инициализация PdfViewController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    PdfViewController *pdfViewController = [[PdfViewController alloc]init];
    [pdfViewController setFileName:@"test"];
    [self.navigationController pushViewController:pdfViewController animated:YES]; 
}

- Кажется, проблема в том, что PdfViewController не загружает соответствующий перо самостоятельно. Если я сделаю запрос из TableViewCell, PdfViewController будет загружен правильно.

Я изменил код на:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.navigationController.viewControllers.lastObject setFileName:@"test"];
}

Единственное, что нужно знать, это то, что viewDidLoad и viewWillAppear вызываются до выполнения tableView didSelectRowAtIndexPath, поэтому PDF должен быть загружен в viewDidAppear.

1 Ответ

1 голос
/ 20 марта 2012

С Xcode 4.2 или новее вы можете передавать данные между двумя контроллерами представления с помощью segue.

Пожалуйста, проверьте:

Как передать prepareForSegue: объект

Ваш код может выглядеть так:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
  if ([[segue identifier] isEqualToString:@"__YOUR_SEGUE_STRING__"]) {
     PdfViewController *pdfViewController = 
     (PdfViewController*)[segue destinationViewController];
    //
    // write your code here
    //
    [pdfViewController setFileName:@"test"];
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...