2012-02-04 56 views
2

好的,让我解释一下这个场景。我正在开发一个应用程序,它在主窗口中有一个背景图像。我也有一个导航控制器,它不坐在屏幕的顶部,而是它的100px向下。导航控制器是半透明的,所以你可以通过它看到背景。在其超级视图中的特定位置添加UITableViewController

现在是这个问题。在应用程序的某个点,用户点击一个按钮,并且我有一个UITableViewController类,我使用pushViewController将其添加到导航控制器中。与此相关的问题是,虽然桌面视图的顶部直接出现在导航控制器的下方,但它在导航控制器后面放置了白色背景,消除了半透明效果。

我试过以下内容: - 设置我的tableviewcontroller视图的框架属性,即 即。

tableviewcontroller1.view.frame= CGRectMake(0,120,320,300); 

(我已经打得四处y位置,但它没有什么区别,无论我做什么。)

我想也许我可以创建一个UIViewController并创建一个透明的背景图,然后添加tableviewcontroller作为子视图,并在这样做,我希望我设置在tableviewcontroller框架边界将生效。我试过如下:

[parentview.view addSubView: tableviewcontroller1]; // runtime error 
[parentview.view addSubView: tableviewcontroller1.view]; // runtime error 
[parentview.view addSubView: tableviewcontroller.tableView]; // runtime error 

我真的很努力理解为什么我设置的tableviewcontroller.view框架属性没有任何效果,我检查了我所有的超级看法和他们都没有了“调整子视图”属性勾选。

我非常感谢这方面的一些帮助,我真的被困在这里,我做了很多搜索,但无法找到答案。

非常感谢 迈克尔

+0

你会得到什么运行时错误? – Rayfleck 2012-02-04 16:45:15

+0

你想让桌面视图具有白色背景或透明背景吗? – 2012-02-04 19:31:54

回答

2

你所谓的导航控制器也许是UINavigationBar。导航控制器控制各种视图控制器,导航栏是属于导航控制器的UI界面。

要解决您的问题,只需让您的表格视图具有透明背景。

// in NewTableViewController.m, viewDidLoad 
self.tableView.backgroundColor = [UIColor clearColor]; 

如果由于某种原因,你需要有上面和下面的表视图控制器一些空间视图,你必须创建一个视图控制器,然后插入表中查看自己。标准UITableViewController具有设置为控制器的主要view,因此不能调整大小表视图...

  1. 创建子类UIViewController(未UITableViewController)。
  2. 使控制器符合<UITableViewDelegate, UITableViewDatasource>
  3. 创建@property调用tableView
  4. 初始化时,将self设置为表格视图的delegatedatasource
  5. 在tableView上创建适当大小的透明视图。此视图以及表视图都是视图控制器的主要view的子视图。
  6. 手动为表视图实现必要的数据源和委托方法。
+0

感谢Mundi的解释,我希望能够使用现有的UITableViewController子类来完成它。我基本上实现了你的建议,但是使用IB来代替,只是插入了一个UITableView项目。 – MichaelGois 2012-02-05 12:30:50

相关问题