J'ai mis en place une table groupée sur mon application, et pousser vers de nouvelles vues fonctionne très bien. Sauf pour une chose. Les titres et la disposition de la pile sont tous bizarres. Voici la répartition:iPhone: tables groupées et problèmes de contrôleur de navigation
- J'ai deux sections dans ma table.
- Lorsque j'appuie sur la première ligne de la première section, cela m'amène à la vue correcte, mais le titre de la nouvelle vue est le nom de la première ligne de la deuxième section de la table.
- À son tour, la deuxième rangée dans le titre de la première section est la deuxième rangée dans le titre de la deuxième section.
Si je tape sur la deuxième ligne dans la deuxième partie de la table de vue racine, le bouton de navigation va à la deuxième ligne de la première section de la table.
Alors, voici un diagramme de ma table:
Tableau Section 1
Ligne 1
Row 2
Ligne 3
Table Section 2
Ligne A
Ligne B
Ligne C
Donc, si je tape sur la ligne 3, le titre de la vue poussé est rangée C. Le bouton de navigation me dit de revenir à la rangée 3, puis finalement se retrouver à la vue racine.
Voici mon fichier de mise en œuvre poussant les vues:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//CSS
if ([[arryClientSide objectAtIndex:indexPath.row] isEqual:@"CSS"])
{
CSSViewController *css = [[CSSViewController alloc] initWithNibName:@"CSSViewController" bundle:nil];
[css setTitle:@"CSS"];
[self.navigationController pushViewController:css animated:YES];
}
//HTML
if ([[arryClientSide objectAtIndex:indexPath.row] isEqual:@"HTML"])
{
HTMLViewController *html = [[HTMLViewController alloc] initWithNibName:@"HTMLViewController" bundle:nil];
[html setTitle:@"HTML"];
[self.navigationController pushViewController:html animated:YES];
}
//JS
if ([[arryClientSide objectAtIndex:indexPath.row] isEqual:@"JavaScript"])
{
JSViewController *js = [[JSViewController alloc] initWithNibName:@"JSViewController" bundle:nil];
[js setTitle:@"JavaScript"];
[self.navigationController pushViewController:js animated:YES];
}
//PHP
if ([[arryServerSide objectAtIndex:indexPath.row] isEqual:@"PHP"])
{
PHPViewController *php = [[PHPViewController alloc] initWithNibName:@"PHPViewController" bundle:nil];
[php setTitle:@"PHP"];
[self.navigationController pushViewController:php animated:YES];
}
//SQL
if ([[arryServerSide objectAtIndex:indexPath.row] isEqual:@"SQL"])
{
SQLViewController *sql = [[SQLViewController alloc] initWithNibName:@"SQLViewController" bundle:nil];
[sql setTitle:@"SQL"];
[self.navigationController pushViewController:sql animated:YES];
}
& le tableau d'alimentation des données de la table:
- (void)viewDidLoad {
[super viewDidLoad];
arryClientSide = [[NSArray alloc] initWithObjects:@"CSS",@"HTML",@"JavaScript",nil];
arryServerSide = [[NSArray alloc] initWithObjects:@"Objective-C", @"PHP",@"SQL",nil];
// arryResources = [[NSArray alloc] initWithObjects:@"HTML Colour Codes", @"Useful Resources", @"About",nil];
self.title = @"Select a Language";
[super viewDidLoad];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
Toute aide serait grandement apprécié.
Jack
Fuite de mémoire sacrée, Batman! (Chaque fois que vous 'alloc/init' un nouveau viewController, vous devez le' libérer 'après l'avoir poussé) –
@Dave +1 pour le * batman *! – bddckr