0

階層データ構造を示すテーブルビューを使用しています。最初のノードを取得し、テーブルビューに子を表示して、ツリーの最後まで繰り返します。私はこのようにしています:

- (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を1つだけ作成することですが、そのようにすると、ストーリーボードでいくつかのコントローラーを操作していて、持っていない場合にできるように、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)

ありがとう。

4

1 に答える 1

1

これが私がストーリーボードが好きではない理由です。あなたがやりたいことをすることは常に可能でした(私が正しく理解していれば)が、ストーリーボードはそれを損ないます。iOS 3 や iOS 4 ではコードで物事を行う柔軟性がありません。

とにかく、次のようなことをしたい:

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

ビジネス ロジックは、MyTableViewController のクラスを選択するだけです。あるいは、MyTableViewController を柔軟なものにすることもできます。この場合、これらの 2 行の間に、適切なデータを表示するための構成情報を指定します。(ただし、ストーリーボードを使用して、Table View Controller を構成することで同じことができることを認めなければなりませんperformSegue:。)

于 2013-05-01T16:34:03.573 に答える