Iphone 在基于导航的应用程序中将背景图像添加到UITableViewController

Iphone 在基于导航的应用程序中将背景图像添加到UITableViewController,iphone,uinavigationcontroller,uiimage,uitableview,Iphone,Uinavigationcontroller,Uiimage,Uitableview,我有一个基于导航的应用程序,可以将UITableViewControllers推到堆栈上。我想在我所有的UITableViewControllers中添加一个背景UImage。不是UIColor,而是UImage。我知道如何使用Nib文件并将UITableView本身设置为使用[UIColor ClearColor],但我不想检查所有UITableViewControllers并将其更改为使用Nib文件等 我还发现,如果我在我的应用程序中只使用一个tableviewcontroller,这将非常

我有一个基于导航的应用程序,可以将
UITableViewControllers
推到堆栈上。我想在我所有的
UITableViewControllers
中添加一个背景
UImage
。不是
UIColor
,而是
UImage
。我知道如何使用
Nib
文件并将
UITableView
本身设置为使用
[UIColor ClearColor]
,但我不想检查所有
UITableViewControllers
并将其更改为使用
Nib
文件等

我还发现,如果我在我的应用程序中只使用一个tableviewcontroller,这将非常棒。我认为有一种方法可以实现这一点,即在默认情况下在
UITableViewController
中创建的“我的表视图”下方添加一个子视图


任何建议都很好。

如果您的类是UIViewController子类,那么您可以这样做:

[self.view setBackgroundColor:
     [UIColor colorWithPatternImage:
      [UIImage imageWithContentsOfFile:
       [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
        @"background.png"]]]];

在基于导航的应用程序中有点不同:只需更改每个表视图所在的导航视图的背景。在每个UITableViewController的
viewDidLoad
中放置以下代码可以工作:

self.navigationController.view.backgroundColor = 
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];

但是您可能只需要在导航控制器的顶层执行一次,而不是在每个tableview控制器中执行一次(尽管您仍需要将每个背景设置为清除)。

给出的答案my Madhup是正确的答案。UITableViewController是UIViewController的一个子类,因此将其添加到UITableViewController的viewDidLoad方法非常有效

UIImageView *backgroundView = 
  [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0, 
                                  0, 
                               self.navigationController.view.frame.size.width, 
                               self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | 
                                  UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];
正如戈姆所说

只需在
UINavigationController


从iOS 3.2开始,
-[UITableView setBackgroundView:
已经存在,这可能比今后提出的一些其他解决方案更简单。

在iOS 6上使用以下方法:

UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];

谢谢,但这实际上是我问题的关键。它不是UIViewController-它是UITableViewController。你指的是什么教程?此外,我需要第三行:self.view.backgroundColor=[UIColor clearColor];这不会像viewcontroller那样将背景图像向下推到导航栏的底部……我在我的tableVC:[self.tableView setBackgroundView:[[UIImageView alloc]initWithImage:[UIImageName:@“background.jpg”]];工作起来很有魅力;)这里有一个新问题:@SteveMoser我在这个问题上添加了iOS解决方案为什么是iOS6<代码>@property(非原子、读写、保留)UIView*backgroundView NS_可用_IOS(3_2);//背景视图将自动调整大小以跟踪表视图的大小。这将作为表格视图的子视图放置在所有单元格和页眉/页脚后面。某些设备的默认值可能为非零。是,我知道。但是这里提到的另一个解决方案不适用于iOS6,我认为这个解决方案在<4上有缺陷。我以前试过,但没用。不知道这到底是什么时候修好的。