私はUINavigationControllerに埋め込まれたUITableViewControllerを持っています。DimViewing TableViewControllerを最初のストーリーボードに巻き戻します
showList
に詳細ビュー(詳細ビューがUITabViewControllerにある)をクリックすると、ListというUITableViewController(リストテーブルビュー)が表示されます。私は、デリゲートメソッドdidSelectFromList
がdidSelectRowAtIndexPath
から呼び出されたリスト項目を選択した場合はブルーライン
で示される詳細ビュー:私はナビゲーションコントローラにBack
ボタンをクリックした場合 、私は正しい画面をバック取られていますアプリはメイン画面(ホームビュー)に戻り、 の赤い線で表示されます。
私がしたいのは紫色の線です。
任意のヘルプ?
試み1:
私は、デリゲートが一覧TableVCを閉じてみましょう。
#import "ListTableViewController.h"
@interface CallDetailViewController() <ListTableViewControllerDelegate>
@property (nonatomic, strong) LotListTableViewController * lltvc;
@end
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([[segue identifier] isEqualToString:@"segue_list"]) {
self.lltvc = (ListTableViewController*)segue.destinationViewController;
self.lltvc.delegate = self;
}
}
- (void) showList {
[self performSegueWithIdentifier:@"segue_list" sender:self];
}
#pragma mark LIST SELECTION DELEGATE METHOD
- (void) didSelectFromList:(NSString *)item {
[self.lltvc dismissViewControllerAnimated:YES completion:^{
NSLog(@"Did Select item: %@", item);
}];
}
リストテーブルビューコントローラで
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
///.. stuff to find the correct string
[self.delegate didSelectFromList:item];
}
試み2:ここでは
私はリストTableVCが自分自身をdimissてみましょう。
#import "ListTableViewController.h"
@interface CallDetailViewController() <ListTableViewControllerDelegate>
@end
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([[segue identifier] isEqualToString:@"segue_lots"]) {
NSLog(@"GOING TO THE LOT LIST");
UINavigationController * nvc = (UINavigationController*)segue.destinationViewController;
LotListTableViewController *lltvc = [nvc childViewControllers][0];
lltvc.delegate = self;
}
}
- (void) showLotList {
[self performSegueWithIdentifier:@"segue_lots" sender:self];
}
#pragma mark LIST SELECTION DELEGATE METHOD
- (void) didSelectFromList:(NSString *)item {
NSLog(@"Did Select item: %@", item);
}
リストテーブルビューコントローラで
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
///.. stuff to find the correct string
[self dismissViewControllerAnimated:YES completion:^{
[self.delegate didSelectFromList:item];
}];
}
私はまた、あなたがビューコントローラをプッシュし続けるならば、彼らが得る一覧TableVCにdidSelectRowAtIndexPathから
[self.navigationController dismissViewControllerAnimated:YES completion:^{
[self.delegate didSelectFromList:item];
}];
詳細VCからnavコントローラを押すのではなく、リストテーブルVCを持つnavコントローラを表示します。その場合、[self.nav dismissviewCOntrollerは動作します、 –
これは正しい答えです。私はプレゼンテーションの代わりにリストを押していた。 –