UINavigationController 与 UIView 和 UITableView

发布于 2024-09-02 15:59:20 字数 857 浏览 5 评论 0原文

我正在创建一个基于导航的应用程序,它显示一个使用 openGL 渲染的图形,以及一个列出图形上显示的所有元素的公开按钮的表格视图,以及一个设置公开按钮。

导航控制器也是一个表视图委托和数据源,表视图以编程方式添加到视图中,并将其委托和数据源设置为“self”。基于 OpenGL 的图形视图是通过 IB 添加的。

我遇到的问题是我试图在 didSelectRowAtIndexPath 方法中推送视图控制器(设置或图形元素属性)。该方法注册并推送新视图,但表视图保留并遮盖了推送的视图的一部分,就好像它具有不同的导航控制器一样。

我似乎无法将 tableview 的导航控制器设置为与 UINavigationControllers 视图的其余部分相同。

有谁知道我该如何解决这个问题?

我的导航控制器的 initWithCoder 方法(其中添加了 tableview)如下所示:

elementList = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStyleGrouped];
elementList.dataSource = self;
elementList.delegate = self;
[self.view addSubview:elementList];

此外,在源文件中,推送导航控制器的 DidSelectRowAtIndexPath 方法如下所示:

Settings* Controller = [[Settings alloc] init];
[self pushViewController:Controller animated:YES];
[Controller release];

I'm creating a navigation-based app which displays a graph, rendered with openGL, and a tableview listing disclosure buttons of all of the elements that are displayed on the graph, and a settings disclosure button.

The navigation controller is also a tableview delegate and datasource, and the tableview is added to the view programatically and has its' delegate and datasource set to 'self'. The OpenGL based graph view is added via IB.

The problem I'm having is that I'm trying to push a view controller (either settings or graph element properties) within the didSelectRowAtIndexPath method. The method registers and the new view is pushed on, but the tableview stays and obscures part of the view that was pushed on, as if it has a different navigation controller.

I can't seem to set the tableview's navigation controller to be the same as the rest of the UINavigationControllers' view.

Does anyone know how I could fix this?

My navigation controllers' initWithCoder method, where the tableview is added, appears as follows:

elementList = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStyleGrouped];
elementList.dataSource = self;
elementList.delegate = self;
[self.view addSubview:elementList];

Further in the source file, the DidSelectRowAtIndexPath method where the navigation controller is pushed appears as follows:

Settings* Controller = [[Settings alloc] init];
[self pushViewController:Controller animated:YES];
[Controller release];

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清眉祭 2024-09-09 15:59:21

通过在 IB 中添加 UITableView、将 IBOutlet 添加到 elementList 并通过 IB 将 UIViewController 设置为委托和数据源来修复。

Stack Overflow 对于将问题表达出来非常有用,这样解决方案就会变得显而易见。

Fixed by just adding a UITableView in IB, adding IBOutlet to elementList, and setting the UIViewController as the delegate and datasource via IB.

Stack Overflow can be really useful for putting your problems to words so the solution becomes obvious.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文