我正在使用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 - manually switch to another view?。
答案 0 :(得分:0)
正如@ 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]
使用新数据重新加载表格。