Je suis en train de créer une application iPad avec une interface utilisateur similaire à l'application Mail d'Apple, à savoir:Mise à jour DetailViewController de RootController
- contrôleur RootView (vue de table) sur le côté gauche de la vue fendue pour navigation avec une hiérarchie de vues multiples. Lorsqu'une cellule de tableau est sélectionnée, une nouvelle vue de table est poussée sur le côté gauche
- La nouvelle vue sur le côté gauche peut mettre à jour la vue détaillée.
Je peux accomplir les deux tâches MAIS PAS ENSEMBLE. Je veux dire que je peux faire une vue de table à plusieurs niveaux dans le RootController (HERE you can find the working source code).
Ou je peux faire une vue de table à un seul niveau dans le RootController qui peut mettre à jour le detailViewController (ici il y a le code source: http: //www.megaupload.com/? D = D6L0463G).
Quelqu'un peut-il me dire comment faire une table à plusieurs niveaux dans le RootController qui peut mettre à jour un detailViewController?
Il y a plus de code source au lien, mais ci-dessous est la méthode dans laquelle je suppose que je dois déclarer une nouvelle detailViewController (qui doit être mis en UISplitViewController):
- (void)tableView:(UITableView *)TableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row];
//Get the children of the present item.
NSArray *Children = [dictionary objectForKey:@"Children"];
//
if([Children count] == 0) {
/*
Create and configure a new detail view controller appropriate for the selection.
*/
NSUInteger row = indexPath.row;
UIViewController <SubstitutableDetailViewController> *detailViewController = nil;
if (row == 0) {
FirstDetailViewController *newDetailViewController = [[FirstDetailViewController alloc]initWithNibName:@"FirstDetailView" bundle:nil];
detailViewController = newDetailViewController;
}
if (row == 1) {
SecondDetailViewController *newDetailViewController = [[SecondDetailViewController alloc]initWithNibName:@"SecondDetailView" bundle:nil];
detailViewController = newDetailViewController;
}
// Update the split view controller's view controllers array.
NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController, detailViewController, nil];
splitViewController.viewControllers = viewControllers//nothing happens.....
[viewControllers release];//
}
else {
//Prepare to tableview.
RootViewController *rvController = [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:[NSBundle mainBundle]];
//Increment the Current View
rvController.current_level += 1;
//Set the title;
rvController.current_title = [dictionary objectForKey:@"Title"];
//Push the new table view on the stack
[self.navigationController pushViewController:rvController animated:YES];
rvController.tableDataSource = Children;
[rvController.tableView reloadData]; //without this instrucion,items won't be loaded inside the second level of the table
[rvController release];
}
}
Bienvenue dans Stack Overflow (SO). Un certain nombre de choses. D'abord, vous pouvez mettre en forme le code en le mettant en retrait de quatre espaces. Je vais le faire pour vous juste après avoir terminé ce commentaire. Deuxièmement, les gens sur SO qui vont vous aider ne sont pas du tout "paresseux" mais ils sont probablement occupés. L'affichage de votre code source afin que les gens puissent vous aider avec leur temps limité est généralement attendu. – John