SWRevealViewController с одного контроллера на другой
-
21-12-2019 - |
Вопрос
я работаю с SWRevealViewController
иметь боковое меню в приложении.Он работает, как и ожидалось, из бокового меню на контроллере.Теперь я хотел бы использовать SWRevealViewController
снова с одного контроллера на другой (оба UITableViewController
).
Из бокового меню к контроллеру 1 и контроллеру 2:
Это то, что я пытался сделать до сих пор:
Настройте Real View Controller Segue
от Интерфейсного Разработчика ко второму Контроллеру с помощью identifier "articlesSegue"
.
И в первом контроллере я использую didSelectRowAtIndexPath
и prepareForSegue
чтобы показать второй контроллер:
- (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];
}
Выбор элемента из списка отображается как выбранный, но ничего не происходит.
Я протестировал это с помощью Push Segue, и это сработало, но я все же предпочитаю его работе с SWRevealViewController
.
Я нашел этот вопрос, но я не совсем уверен, как его нужно реализовать, SWRevealViewController – вручную переключиться на другой вид?.
Решение
Как объяснил @Anbu.Kathik, я не мог использовать SWReveal
переехать из Controller
другому Controller
.Я решил это, используя то же самое TableViewController
, я добавил свойство type
чтобы проверить, какое из представлений является текущим, и просто обновить таблицу, когда элемент выбран 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];
}
}
С использованием [self.tableView reloadData]
перезагружает таблицу новыми данными.