如何将新的 viewController 推送到另一个视图控制器中的现有视图中?

Posted

技术标签:

【中文标题】如何将新的 viewController 推送到另一个视图控制器中的现有视图中?【英文标题】:How can I push a new viewController into an existing view within another view controller? 【发布时间】:2012-03-19 07:03:37 【问题描述】:

是否可以将新的 viewController 推送到另一个视图控制器中的现有视图中?

这是我的设置开始:

你可以看到我有一个 UITableView。当点击一个单元格时,使用此代码推送一个新的视图控制器;

DetailTableViewController *viewcontroller = [[DetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
viewcontroller.item = (MWFeedItem *)[itemsToDisplay objectAtIndex:indexPath.row];
[self presentViewController:viewcontroller animated:YES completion:nil];
[viewcontroller release];  

不幸的是,它看起来像这样,并坐在顶部的酒吧顶部,上面写着“Will Roberts”

为什么会发生这种情况,因为它显然超出了我将其设置为从中推送的视图...

【问题讨论】:

代替“presentViewController”,使用“pushViewController”... @objc,已经通过答案..您最初是如何显示表格视图的? 我在 Interface Builder 中添加了 UITableView 并将其链接起来。它由 AppDelegate 控制。 嘿,你需要一些视网膜图形 :) 【参考方案1】:

代替“presentViewController”,使用

DetailTableViewController *viewcontroller = [[DetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
viewcontroller.item = (MWFeedItem *)[itemsToDisplay objectAtIndex:indexPath.row];
[self.navigationController pushViewController:viewcontroller animated:YES];
[viewcontroller release];

或使用模态视图控制器

[self presentModalViewController:viewcontroller animated:YES]

【讨论】:

如果我添加“self.navigationController”而不是“self”,则根本不起作用 我使用了“模态视图控制器”代码,但发生的情况与屏幕截图中的一样...【参考方案2】:

//展示带有导航控制器的新视图控制器会对你有所帮助。

DetailTableViewController *viewcontroller = [[DetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
viewcontroller.item = (MWFeedItem *)[itemsToDisplay objectAtIndex:indexPath.row];
[self.navigationController presentViewController:viewcontroller animated:YES completion:nil];
[viewcontroller release]; 

//已编辑

DetailTableViewController *viewcontroller = [[DetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];

UINavigationController *nav1=[[UINavigationController alloc]initWithRootViewController:viewController1];

[self presentModalViewController:nav1 animated:YES];

【讨论】:

如果我添加“self.navigationController”而不是“self”,则根本不起作用 你的控制器 *viewController1; viewController1 = [[YourController alloc] initWithNibName:@"YourController" bundle:nil]; UINavigationController *nav1=[[UINavigationController alloc]initWithRootViewController:viewController1]; [自我presentModalViewController:viewController1动画:YES]; //试试这个sn-p肯定对你有帮助。 没有 nib 文件,只有 .h 和 .m 用于 DetailTableViewController 好的,我已经在编辑部分编辑了代码。使用这个可能会解决您的问题。

以上是关于如何将新的 viewController 推送到另一个视图控制器中的现有视图中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将新的 UICollectionViewController 推送到单元格单元格内的 navigationController

如何将新的视图控制器推送到当时在 tabbarcontroller 中存在的 navigationcontroller?

如何从 UITableView 推送到新的 viewController?

sh 如何将新的本地分支推送到远程Git存储库并跟踪它?

将新的键值对推送到 json

如何将新的本地分支推送到远程 Git 存储库并对其进行跟踪?