子类UITableView,背景不显示静态单元格

时间:2014-08-29 07:11:23

标签: ios objective-c xcode uitableview

我正在尝试创建一个处理用户登录的视图控制器。由于我需要视图控制器是可滚动的,包含一个单独的视图(用于登录),并包含一个背景,我决定采用制作tableviewcontroller的路径,对其进行子类化,然后添加必要的视图。我将UITableViewController子类化,并将此代码添加到viewdidload()

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewControllerBlurred.png"]];

[tempImageView setFrame:self.tableView.frame];



self.tableView.backgroundView = tempImageView;

[tempImageView release];

这成功地将我的背景图像添加到控制器,此时,视图控制器看起来像:http://imgur.com/ST4H8uf

接下来,我开始使用静态单元格,放入其中一个单元格的视图中,然后开始设计登录屏幕。此时,我的故事板看起来像:http://imgur.com/n6GKeGq&ST4H8uf但问题出现在我运行项目时。

当我运行项目时,我不断获得与第一张图片中相同的背景屏幕,而没有任何新的静态单元格或视图。所有和任何帮助都非常感谢这可能是导致这个问题的原因。谢谢。

CellForRowAtIndexPath代码:

*/
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#@"reuseIdentifier"#> forIndexPath:indexPath];

// Configure the cell...

return cell;
}
*/

3 个答案:

答案 0 :(得分:0)

首先检查数据源并且必须设置tableview的委托。 你可能会因此而出现问题。

答案 1 :(得分:0)

永远不要使用UITableViewController!几乎在每种情况下,我都遇到过使用UIViewController并添加表视图要容易得多。你根本无法获得UITableViewController的backgroundView并让它正确滚动。我意识到你只能使用UITableViewController创建一个“静态”表视图,但它足够简单,可以模仿与常规表视图完全相同的行为,而且你不必处理无法添加视图的头痛问题表格(如背景图片)。

答案 2 :(得分:0)

如果你想要的只是一个只有静态单元格的UITableView,那么学会使用UIVcrollView和UIViewController。

@interface vc : UIViewController
@property (nonatomic, strong) UIScrollView *scrollView;
@end

@implementation vc
- (id)init // or whatever initializer you are using to make your view controller
{
    self = [super init];
    if (self) {
        _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,320,568)];
        [_scrollView setContentSize:CGSizeMake(320,568)];  // equals one screen
        [_scrollView setContentSize:CGSizeMake(320,568*2)];  // equals two screens, etc
        // contentSize property determines how much you can scroll inside the UIScrollView view if that makes any sense to you.

        [self.view addSubview:_scrollView]

        // one way of adding a background
        UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageName"]];
        [self.view addSubview:backgroundImageView];

        [_scrollView addSubview:[self newStaticCellAtPosition:CGRectMake(0,0,320,45)]];
        [_scrollView addSubview:[self newStaticCellAtPosition:CGRectMake(0,45,320,45)]];
        // add subviews, you can even use UITableViewCell if you want.
        // I'd use simple UIView's and draw separators and whatnot myself if I were you.
    }

    return self;
}

- (UIView *)newStaticCellAtPosition:(CGRect)position
{
    UIView *staticCell = [[UIView alloc] initWithFrame:position];
    [staticCell setBackgroundColor:[UIColor redColor]];
    return staticCell;
}

@end

对于其他属性,您应该查看UIScrollView文档。记住UITableView继承自UIScrollView,所以如果它很容易挑选你想要的东西。