2014-09-25 85 views
0

我已經構建了一個應用程序,該應用程序用許多項目填充tableview。您可以點擊一個項目,它會打開該項目的詳細視圖。然後,您可以點擊一個按鈕,打開另一個視圖,顯示詳細項目的細節。我還會看到幾個嵌套的視圖,直到您看到完成視圖。我想要一個按鈕點擊,讓我直接回到桌面視圖,但沒有找到方法。我已經嘗試了以下想法:xcode從嵌套視圖打開tableview

1st(僅會解僱前一個屏幕): [self dismissViewControllerAnimated:YES completion:nil]; (不工作): [self.navigationController popToRootViewControllerAnimated:NO]; WorkOrderTableViewController * pushTable = [[WorkOrderTableViewController alloc] init];}} [UINavigationController pushViewController:pushTable animated:YES];

4th(不做任何事): WorkOrderTableViewController * pushTable = [[WorkOrderTableViewController alloc] init]; [self.navigationController pushViewController:pushTable animated:YES];

我甚至試着從以前的屏幕/視圖調用segues。還嘗試了以前的視圖控制器中的一個類。

有沒有辦法直接跳回到表格視圖?如果是這樣,怎麼樣?

+0

'popToViewController:animated:'? – 2014-09-25 15:24:46

+0

我試過了: WorkOrderTableViewController * pushTable = [[WorkOrderTableViewController alloc] init]; [self.navigationController popToViewController:pushTable animated:YES]; 但它沒有做任何事。 這是一些更多的解釋,因爲它可能是我糟糕的編碼技巧。一旦在表格項目的詳細視圖中,您單擊一個按鈕,該按鈕將推送到具有要放入信息的服務屏幕。還有一個繼續按鈕,可以將該按鈕推送到可以放入其他信息的下一個屏幕。另外還有一個按鈕把它帶到我有完整按鈕的最終屏幕。幫助嗎? – Jim 2014-09-26 00:31:29

回答

0

涉及您的評論上面的代碼....

當您使用alloc你正在創建一個新的對象。你想要的是回到已經存在的視圖控制器。將原始實例WorkOrderTableViewController保存在某處(app delegate?自定義父控制器?),以便您可以返回到該位置。

例如,您可以:

創建的UINavigationController一個子類,通過彈出正確的視圖控制器響應的通知。 (您需要自己定義「正確」的含義。)

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(popToTable) name:kReturnToTable object:nil]; 
} 

- (void)popToTable { 
    UIViewController *target = nil; 
    for (UIViewController *controller in [self viewControllers]) { 
     if ([controller isKindOfClass:[UITableViewController class]]) { 
      target = controller; 
      break; 
     } 
    } 
    if (target) { 
     [self popToViewController:target animated:YES]; 
    } else { 
     NSLog(@"Error -- couldn't find my controller in %@", [self viewControllers]); 
    } 
} 

使最終控制器的按鈕發佈該通知。 (通知名稱在最後控制器的頭文件中定義)。

- (IBAction)backToTable:(id)sender { 
    [[NSNotificationCenter defaultCenter] postNotificationName:kReturnToTable object:nil]; 
}