2012-03-02 52 views
0

我有一个UIViewController“PdfViewController”,包含一个UIScrollView,它包含一个由故事板设计的UIWebView。我正在使用Xcode 4.2中的故事板和ARC。 如果我将PdfViewController作为初始ViewController启动,则按预期显示webview。 我想让PdfViewController显示PDF列表中的PDF。所以我做了一个包含文档标题的TableViewController的NavigationController。 如果我试图通过“tableView didSelectRowAtIndexPath”显示PdfViewController,则视图保持黑色并且不加载选定的文档。 Xcode没有错误信息。在UINavigationController堆栈上的UIWebView堆栈未显示

将调用viewDidLoad和来自PdfViewController的viewWillAppear。

这里PdfViewController

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

- 它的初始化看来,问题是PdfViewController本身并不加载造成相应的笔尖。 如果我从TableViewCell中创建一个seque,PdfViewController会正确加载。

我改变了代码:

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

唯一知道这里,就是viewDidLoad中UND viewWillAppear中都的tableView didSelectRowAtIndexPath方法执行之前调用,所以PDF在viewDidAppear被加载。

+0

没有跳出作为显然是不正确。您可以发布您用于查看“PdfViewController”的工作代码,它是否是初始视图时正确显示? – gregheo 2012-03-02 21:06:25

回答

1

使用Xcode 4.2或更高版本,您可以通过segue在两个视图控制器之间传递数据。

请检查:

How to pass prepareForSegue: an object

您的代码可能是这样的:

- (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"]; 
    } 
}