我正在使用UITableViewController,我已经调整了表视图的高度并将其移动了一点。现在我想在表视图上面添加一个UIImageView,但我唯一能做的就是将UIImageView添加为UITableViewController的UITtableView的子视图,这样UIImageView就不在UITableView上面了,图像随桌面滚动图。
我怎样才能完成我正在尝试的事情?这是我一直在使用的代码:
UIImageView *tabImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"temp.png"]];
[self.view addSubview:tabImageView];
谢谢!
答案 0 :(得分:18)
我相信UITableViewController
要求其view
为UITableView
。
过去,我通过将视图控制器从子类化UITableViewController
更改为子类化UIViewController
并实现UITableViewDataSource
和UITableViewDelegate
协议来解决这个问题。然后,您可以将view
设为您想要的任何内容,包括将UITableView
向下移动并添加UIImageView
。
不确定在4.2中是否仍然如此。
答案 1 :(得分:9)
只是想澄清一下,这确实不是一个好主意,原因很多,其中一些列在评论中。你应该真的在做Shaggy Frog的建议,或使用View Controller Containment。
您希望UIImageView
位于tableView
的顶部?如果是这样,您需要将其设置为UINavigationController
的子视图,而不是UITableView
。最简单的方法是使用[self.view.superview addSubview:tabImageView]
。 (尽管正如Shaggy Frog所说,最好从UITableViewController
更改为普通UIViewController
,并手动创建UITableView
如果您希望将UIImageView
附加到UITableView
,那么当您向下滚动时,它会消失,您可以将其设置为带有[self.tableView setTableHeaderView:tabImageView]
的表格标题
答案 2 :(得分:0)
在UITableView
的静态UITableViewController
中取4个单元格,其高度为44 PX
&宽度320PX
。在tableView
文件中注释所有UITableViewController.m
委托方法并输入此代码。
- (void)viewDidAppear:(BOOL)animated
{
UIImageView *backgroundView =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 170)];
backgroundView.image=[UIImage imageNamed:@"default-cover-image.jpg"];
[self.view.superview addSubview:backgroundView];
[self.tableView setFrame:CGRectMake(0, 170, 320, 960)];
[[[UIApplication sharedApplication] keyWindow] setBackgroundColor:[UIColor whiteColor]];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
if ((indexPath.row)==0)
{
cell.accessoryType = UITableViewCellAccessoryNone;
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"one"];
UIImageView *backgroundView =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
backgroundView.image=[UIImage imageNamed:@"sectionHeader.png"];
[cell.contentView addSubview:backgroundView];
}
if ((indexPath.row)==1)
{
cell.accessoryType = UITableViewCellAccessoryNone;
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"two"];
UIImageView *backgroundView =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
backgroundView.image=[UIImage imageNamed:@"sectionHeader2.png"];
[cell.contentView addSubview:backgroundView];
}
if ((indexPath.row)==2)
{
cell.accessoryType = UITableViewCellAccessoryNone;
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"three"];
UIImageView *backgroundView =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
backgroundView.image=[UIImage imageNamed:@"sectionHeader3.png"];
[cell.contentView addSubview:backgroundView];
}
if ((indexPath.row)==3)
{
cell.accessoryType = UITableViewCellAccessoryNone;
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"four"];
UIImageView *backgroundView =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
backgroundView.image=[UIImage imageNamed:@"sectionHeader.png"];
[cell.contentView addSubview:backgroundView];
}
return cell;
}
希望,它会工作。