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 を作成しました。

そして最後に、TableView のヘッダーとして ImagesView を割り当てようとします。

- (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 Delegate Protocolの一部です。

たとえば、私のアプリケーションの 1 つはこのメソッドを使用します。

- (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(ここでヘッダーのデザインを行います)をmainviewまたはtableviewではなく作業領域にドラッグし、headerというiboutletを作成してから、このiboutletを接続しますビューに、次にtableviewcontrollersデリゲートメソッドの実装で

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

これを追加

于 2012-05-02T10:13:25.810 に答える
0

ImagesViewControllerおそらく、viewアウトレットをビューにリンクしていません。ファイルの所有者をクリックして、Interface Builder でこれを行うことができます。ユーティリティから接続インスペクターをクリックすると、viewアウトレットを にリンクできますUIView

于 2012-05-02T10:14:36.700 に答える