0

我正在尝试为UITableView标题创建自定义视图,但不幸的是,我遇到了一个异常:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "ImagesView" nib but the view outlet was not set.'

首先,在 HomeViewController 中我创建了一个 tableView,然后我使用 xib 文件创建了 ImagesViewController,其中设计了我的自定义视图。

最后,我尝试将 ImagesView 分配为我的 tableView 的标题:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    ImagesViewController *imagesView = [[ImagesViewController alloc] init];
    tableView.tableHeaderView = imagesView.view;

}

我究竟做错了什么?我是iOS开发的新手,自己搞定。

谢谢你的帮助!

4

4 回答 4

3

使用这行代码

 {   
 ImageViewcontroller *imageView=[[ImagesViewController alloc]initwithnibname:@"ImageViewController" bundle:nil];       
 }
于 2012-05-02T10:26:33.287 回答
0

您可以使用此方法创建自定义标题视图

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

这是UITableView 委托协议的一部分。

例如,我的一个应用程序使用此方法:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView *customHeaderView = [[UIView alloc] init];
    customHeaderView.frame = CGRectMake(40.0, 20.0, 300.0, 45.0);
    UILabel *headerText = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 0.0, 300, 32)];
    headerText.textAlignment = UITextAlignmentCenter;
    headerText.font = [UIFont systemFontOfSize:FONT_SIZE_FOOTER];
    headerText.numberOfLines = 0;
    headerText.backgroundColor = [UIColor clearColor];
    if (section == 0) {
        headerText.text = @"";
    }
    if (section == 1) {
        headerText.text = SETTINGS_TEXT_PART0;
    }
    [customHeaderView addSubview:headerText];
    return customHeaderView;
}
于 2012-05-02T10:11:39.640 回答
0

试试这个方法,在tableviewcontroller本身的xib文件中,拖一个uiview或者imageview(这里做header的设计)到工作区而不是mainview或者tableview,然后做一个iboutlet叫做header,然后连接这个iboutlet到视图,然后在 tableviewcontrollers 委托方法实现

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
return header;
}

添加这个

于 2012-05-02T10:13:25.810 回答
0

在您的ImagesViewController情况下,您可能还没有将view插座与视图相关联。您可以在 Interface Builder 中通过单击 File's Owner 并从 Utilities 单击 Connection Inspector 来执行此操作,您可以将view插座链接到您的UIView.

于 2012-05-02T10:14:36.700 回答