SWRevealViewController d'un contrôleur à un autre
-
21-12-2019 - |
Question
je travaille avec SWRevealViewController
avoir un menu latéral sur une application.Cela fonctionne comme prévu depuis le menu latéral vers un contrôleur.Ce que j'aimerais faire maintenant, c'est utiliser SWRevealViewController
à nouveau d'un contrôleur à un autre (les deux UITableViewController
).
Du menu latéral au contrôleur 1 au contrôleur 2 :
Voici ce que j'ai essayé de faire jusqu'à présent :
Mettre en place le Real View Controller Segue
de l'Interface Builder au deuxième contrôleur avec identifier "articlesSegue"
.
Et dans le premier contrôleur que j'utilise didSelectRowAtIndexPath
et prepareForSegue
pour afficher le deuxième contrôleur :
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Set selected issue to var
_selectedIssue = _feedItems[indexPath.row];
// Manually call segue to detail view controller
[self performSegueWithIdentifier:@"articlesSegue" sender:self];
}
#pragma mark Segue
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get reference to the destination view controller
TableViewController *tableVC = segue.destinationViewController;
// data used in the second Controller
tableVC.self.type = @"category";
tableVC.self.data = [_selectedIssue.ID stringValue];
}
La sélection d'un élément dans la liste s'affiche comme sélectionné mais rien ne se passe.
Je l'ai testé à l'aide d'un Push Segue et cela a fonctionné, je le préfère néanmoins à travailler avec SWRevealViewController
.
J'ai trouvé cette question mais je ne sais pas trop comment elle doit être mise en œuvre, SWRevealViewController - passer manuellement à une autre vue ?.
La solution
Comme @Anbu.Kathik l'a expliqué, je ne pouvais pas utiliser le SWReveal
passer de Controller
à un autre Controller
.Je l'ai résolu en utilisant le même TableViewController
, j'ai ajouté une propriété type
pour vérifier quelle est la "tableview" actuelle et simplement mettre à jour la table lorsqu'un élément est sélectionné sur didSelectRowAtIndexPath
.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// check type of current tableview - if category display article
if ([self.type isEqualToString:@"category"]) {
// display single article
_selectedArticle = _feedItems[indexPath.row];
[self performSegueWithIdentifier:@"detailSegue" sender:self];
}
else {
// else if issue display list of articles on the same TableViewController
_selectedIssue = _feedItems[indexPath.row];
self.type = @"category";
self.data = [_selectedIssue.ID stringValue];
[_homeModel downloadItems:self.type :self.data];
}
}
En utilisant [self.tableView reloadData]
recharge la table avec de nouvelles données.