我有一个UITableViewController
内一个UIViewController
。虽然这个 table viewcontroller 是唯一涉及的,但当用户点击一行时,它可以很好地推送视图。然而,自从我把它移到 中包含的两个之一之后UIViewController
,行的水龙头突然什么都不做。
我试过四处寻找,但我不是第一个遇到这个问题的人,但没有一个答案适合我的情况,或者这些问题没有有效的答案。该链接是我找到的最接近的链接,但我没有使用故事板——我使用的是单独的 XIB。
那么如何从视图控制器中的视图控制器推送新视图?
回顾一下:
这就是我所拥有的,它可以很好地将用户带到一个新屏幕!
// Normal table behavior, as illustrated by [another question][2]. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { SomeView *detailViewController = [[SomeView alloc] initWithNibName:@"SomeView" bundle:nil]; // Pass the selected object to the new view controller. [self.navigationController pushViewController:detailViewController animated:YES]; }
现在我将视图控制器作为视图中的一个属性——上面的代码在 tableviewcontroller 的文件中而不是在“主”视图中,不会导致新屏幕出现了!
感谢您的评论!这是一些代码来阐明我的情况。
控制器中的控制器。这是我用来测试概念的测试项目中的一个文件。在这种情况下,我在 tableview 控制器中有一个 tableview 控制器。
@interface SimpleTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> // This is the controller within the controller @property IBOutlet SecondTableViewController *secondTableController; @property IBOutlet UITableView *secondTable;
我
SecondTableViewController
有这个有趣的一点。- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. UIViewController *detailViewController = [[UIViewController alloc] initWithNibName:@"SimpleNonTableViewController" bundle:nil]; // ... // Pass the selected object to the new view controller. [manualViewControllerParent.navigationController pushViewController:detailViewController animated:YES]; }
用户与之交互的视图与SimpleTableViewController
. 这样,SecondTableViewController
就是“内”了SimpleTableViewController
。如果您想了解更多详细信息,请随时发表评论!
我已将我的测试/概念项目放在 github 上。 https://github.com/hyliandanny/TableViewCeption