2013-05-01 35 views
0

我正在使用顯示層次結構數據結構的表格。我把第一個節點放在tableview中顯示兒子,並重復它直到樹的末尾。我做了這種方式:生成新的UITableViewController並顯示它

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if([[actualNode getSonAtIndex:0] sonsCount]>0) { 
    NSLog(@"New level"); 
    actualNode = [actualNode getSonAtIndex:indexPath.row]; 
    [self.tableView reloadData]; 
} else { 
    NSLog(@"Service"); 
    [self performSegueWithIdentifier:@"Service" sender:NULL]; 
} 

這是不正確的做法,但問題是,我不知道有多少水平已樹,所以我不能在故事板創建它們。這個想法是創建只有一個TableView用於顯示每個級別,但以這種方式做我不能回到NavBar的上一級,就像我可以做,如果我在故事板中的一些控制器,我沒有動畫。那麼,有沒有辦法做到這一點?如:

MyNextLevel *nextlevel = [MyNextLevel alloc]; 
[nextlevel setNode: actualNode] 
Myactualtableview = nextlevel; (Here the next level is showed in the screen with animations and with the possibility to go back to the previous level) 

謝謝。

回答

1

這就是爲什麼我不喜歡故事板。一直都有可能做你想做的事情(如果我正確地理解它的話),但是故事板會減損它;他們沒有在代碼中做事的靈活性,這是我們總是不得不在iOS 3和iOS 4中做的事情。

總之,你想要做這樣的事情:

UITableViewController* tvc = [[MyTableViewController alloc] initWithNibName:@"MyNib" bundle:nil]; 
[self.navigationController pushViewController:tvc animated:YES]; 

你的業務邏輯可以只挑類MyTableViewController。或者,MyTableViewController可以是靈活的東西,在這兩行之間你給它一些配置信息,使它顯示正確的數據! (但我不得不承認,你可能使用故事板做同樣的事情,在performSegue:配置表視圖控制器。)

+0

起初謝謝你的回答,但我還沒有嘗試過:我沒有沒有創建特定的NIB文件。我的班級名稱是「NextLevelController」,並從UITableViewController繼承,我如何知道我使用的NIB名稱是什麼? – Sergiodiaz53 2013-05-01 17:19:21

+0

你不*有*用UITableViewController使用一個筆尖;在這種情況下,只需提供nil作爲筆尖,並且UITableViewController將創建一個默認的表格視圖並很好地勾住一切。 – matt 2013-05-01 17:20:15

+0

如果您希望在UITableViewController中使用一個筆尖,那麼當您在Xcode中創建UITableViewController子類時,您應該選中詢問您是否需要筆尖的複選框。這樣,你就可以得到正確的筆尖,正確的名字,以及桌面視圖和一切正確的連接。 – matt 2013-05-01 17:21:07

相關問題