关闭 TableViewController 展开到第一个故事板
Dimissing TableViewController unwinds to first storyboard
我有一个 UITableViewController 嵌入在 UINavigationController 中。
当我单击详细视图中的按钮时(详细视图位于 UITabViewController)到 showList
UITableViewController (List Table View) 调用的 List 被呈现。
如果单击导航控制器中的 Back
按钮,我将返回 correct 屏幕:蓝线显示的详细视图
如果我 select 一个列表项,委托方法 didSelectFromList
从 didSelectRowAtIndexPath
调用并且应用程序被带回主屏幕(主页视图)显示
红线。
我要的是紫线
有什么帮助吗?
尝试 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);
}];
}
在列表中TABLE查看控制器
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
///.. stuff to find the correct string
[self.delegate didSelectFromList:item];
}
尝试 2:
在这里,我让列表 TableVC 自行消失。
#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);
}
在列表中TABLE查看控制器
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
///.. stuff to find the correct string
[self dismissViewControllerAnimated:YES completion:^{
[self.delegate didSelectFromList:item];
}];
}
我也试过从列表中的 didSelectRowAtIndexPath TableVC
[self.navigationController dismissViewControllerAnimated:YES completion:^{
[self.delegate didSelectFromList:item];
}];
如果你继续推送视图控制器,它们会被添加到导航堆栈中,所以如果你[self dismiss 或 [self.navigationController dismiss,所有导航堆栈都会被清除,你将被带到 rootViewController .
你可以弹出一个视图控制器或者
不要从 detailVC 推送导航控制器,而是呈现具有列表 table VC 的导航控制器。在那种情况下 [self.nav dismissviewCOntroller
将起作用,
我有一个 UITableViewController 嵌入在 UINavigationController 中。
当我单击详细视图中的按钮时(详细视图位于 UITabViewController)到 showList
UITableViewController (List Table View) 调用的 List 被呈现。
如果单击导航控制器中的 Back
按钮,我将返回 correct 屏幕:蓝线显示的详细视图
如果我 select 一个列表项,委托方法 didSelectFromList
从 didSelectRowAtIndexPath
调用并且应用程序被带回主屏幕(主页视图)显示
红线。
我要的是紫线
有什么帮助吗?
尝试 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);
}];
}
在列表中TABLE查看控制器
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
///.. stuff to find the correct string
[self.delegate didSelectFromList:item];
}
尝试 2:
在这里,我让列表 TableVC 自行消失。
#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);
}
在列表中TABLE查看控制器
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
///.. stuff to find the correct string
[self dismissViewControllerAnimated:YES completion:^{
[self.delegate didSelectFromList:item];
}];
}
我也试过从列表中的 didSelectRowAtIndexPath TableVC
[self.navigationController dismissViewControllerAnimated:YES completion:^{
[self.delegate didSelectFromList:item];
}];
如果你继续推送视图控制器,它们会被添加到导航堆栈中,所以如果你[self dismiss 或 [self.navigationController dismiss,所有导航堆栈都会被清除,你将被带到 rootViewController .
你可以弹出一个视图控制器或者
不要从 detailVC 推送导航控制器,而是呈现具有列表 table VC 的导航控制器。在那种情况下 [self.nav dismissviewCOntroller
将起作用,