あるコントローラから別のコントローラへの SWRevealViewController
-
21-12-2019 - |
質問
私は一緒に働いています SWRevealViewController
アプリケーションにサイドメニューを表示します。サイドメニューからコントローラーまで期待通りに動作します。今やりたいのは、使用することです SWRevealViewController
再びあるコントローラーから別のコントローラーへ(両方とも UITableViewController
).
サイドメニューからコントローラー 1、コントローラー 2:
これは私がこれまでにやろうとしてきたことです:
をセットアップします。 Real View Controller Segue
Interface Builder から 2 番目のコントローラーへ identifier "articlesSegue"
.
そして、私が使用する最初のコントローラーでは didSelectRowAtIndexPath
そして prepareForSegue
2 番目のコントローラーを表示するには:
- (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を使用してテストしたところ、うまくいきましたが、それでも、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]
新しいデータをテーブルに再ロードします。