SWRevealViewController de um controlador para outro
-
21-12-2019 - |
Pergunta
Eu estou trabalhando com SWRevealViewController
para ter um do lado do menu em um aplicativo.Ele funciona como esperado no menu lateral para um controlador.O que eu gostaria de fazer agora é usar SWRevealViewController
novamente a partir de um controlador para outro (ambos UITableViewController
).
A partir do Menu Lateral para o Controlador 1 Controlador 2:
Isso é o que eu tentei fazer até agora:
Configurar o Real View Controller Segue
a partir da Interface Builder para o segundo Controlador com identifier "articlesSegue"
.
E no primeiro Controlador de eu usar didSelectRowAtIndexPath
e prepareForSegue
para mostrar o segundo Controlador:
- (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];
}
Selecionando um item de lista é exibido como selecionada, mas nada acontece.
Eu testei com um Empurrão Segue e funcionou, ainda prefiro ele para trabalhar com SWRevealViewController
.
Eu achei essa pergunta, mas eu não estou muito certo de como ele deve ser implementado, SWRevealViewController - manualmente alternar para outro modo de exibição?.
Solução
Como O @Anbu.Kathik explicou que eu não poderia utilizar o SWReveal
para mover a partir de Controller
para outro Controller
.Que eu tenha resolvido utilizando o mesmo TableViewController
, Eu adicionei uma propriedade type
para verificar qual é a atual "tableview' e simplesmente atualizando a tabela quando um item é selecionado no 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];
}
}
Usando [self.tableView reloadData]
recarrega a tabela com os novos dados.