我在UINavigationController中嵌入了一个UITableViewController。
当我单击详细视图中的按钮(详细信息视图位于UITabViewController中)到Back
时,会显示名为List的UITableViewController(列表视图)。
如果我单击导航控制器中的didSelectFromList
按钮,我将收回 正确的 屏幕:蓝线所示的详细信息视图
如果我选择一个列表项,则从didSelectRowAtIndexPath
调用委托方法#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);
}];
}
,并将应用程序恢复到主屏幕(主视图),如图所示
红线。
我想要的是紫线。
任何帮助?
尝试1:
我让委托解雇List TableVC。
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
///.. stuff to find the correct string
[self.delegate didSelectFromList:item];
}
在LIST TABLE VIEW CONTROLLER中
#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);
}
尝试2:
这里我让List TableVC自己动摇。
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
///.. stuff to find the correct string
[self dismissViewControllerAnimated:YES completion:^{
[self.delegate didSelectFromList:item];
}];
}
在LIST TABLE VIEW CONTROLLER中
[self.navigationController dismissViewControllerAnimated:YES completion:^{
[self.delegate didSelectFromList:item];
}];
我也尝试过List TableVC中的didSelectRowAtIndexPath
{{1}}
答案 0 :(得分:2)
如果继续按下视图控制器,它们会被添加到导航堆栈中,所以如果你这样做[自解除或[self.navigationController解除,所有导航堆栈都被清除,你将进入rootViewController。
您可以弹出一个视图控制器或
而不是从detailVC推送导航控制器,而是呈现具有列表VC的导航控制器。在这种情况下,[self.nav dismissviewCOntroller
将起作用,