2012-03-02 50 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"]; 
    } 
}