2012-07-24 62 views
0

我在X代碼上創建了一個單一的視圖應用程序,並創建了另一個視圖控制器,並試圖推動第二個視圖控制器。我如何在視圖之間切換,每個視圖都有自己的視圖控制器?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath  *)indexPath 
{ 
if (self.statesView == nil) 
{ 
    StatesView *newStateView = [[StatesView alloc]initWithNibName:@"StatesView" bundle:[NSBundle mainBundle]]; 
    self.statesView = newStateView; 
} 

[self.navigationController pushViewController:self.statesView animated:YES]; 
} 

但隨着SIGABRT信號

+0

請提供更多的細節(什麼崩潰的錯誤,等等) – tikhop 2012-07-24 09:23:59

回答

0

應用程序崩潰所以,你StatesView實例(即newStateView)是一個UIView子類,所以這是一個視圖,而不是一個控制器。當您向其發送UIViewController子類時,您只能使用pushViewController。您可以將您的newStateView使用當前視圖:

[self.view addSubview:self.statesView]; 

但也不它沒有任何過渡。您可以使用[UIView animateWithDuration:animations:]

+0

我的國家的觀點是一個子類的UIViewController本身。 – vivek241 2012-07-24 09:27:18

+0

哦,好的,你能告訴我崩潰消息是什麼意思嗎? – adig 2012-07-24 09:30:27

+0

編程接收信號。 SIGABRT – vivek241 2012-07-24 09:33:52

0

動畫視圖屬性能夠繪製這樣

 
CATransition *transition = [CATransition animation]; 
transition.duration = 1.0; 
transition.type = kCATransitionPush; //choose your animation 
[viewController.view.layer addAnimation:transition forKey:nil]; 
[self.viewController1.view addSubview:viewController2.view]; 
視圖之間的過渡,不要忘記導入QuartzCore LIB!

1

StatesView是一個ViewController嗎? pushViewController:需要一個UIViewController,而不是UIView

我認爲你正在嘗試改變ViewController,當你在UITableView中敲擊一行。 實現這一點的最簡單和最好的方法是使用segues。在你的故事板中,按住CTRL拖動你的UITableViewCell並將它與你的新視圖控制器鏈接。

如果你想以編程方式做到這一點,你需要使用:

[self.storyboard instantiateViewControllerWithIdentifier:@"StatesViewController"]; 
+0

我試圖做到沒有故事板 – vivek241 2012-07-24 09:29:59

+0

@ user730304你有什麼理由不使用故事板?此外,你應該改變你的類名稱,以「ViewController」結尾。 – Oyashiro 2012-07-24 09:33:19