4

すでに一日中 Google を検索しましたが、この問題の解決策がわかりません。

iOS アプリでカスタム セルを使用してテーブル ビューを実装しようとしています。さまざまな画像とラベルを表示するカスタム セルを使用しています。セルがテーブルビューに対して大きすぎることを除いて、すべてが正常に機能しています。heightForRowAtIndexPath メソッドを実装する必要があることはわかっていますが、呼び出されることはありません。

nibファイルとコードのShowPostsViewControllerでTableViewのデリゲートを設定しようとしましたが、何も役に立ちません。問題は、おそらく dataSource が設定されているが、デリゲートが設定されていないことだと思います。理由はわかりませんが。

これまでに見つけたすべての解決策は、デリゲートが正しく設定されていないと言っています。しかし、私はそれが私の場合だと確信しています?! どんな助けにも感謝します。これが私のコードです:

ShowPostsViewController.h

@interface ShowPostsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) IBOutlet UITableView *postsTableView;

@end

および ShowPostsViewController.m

@implementation ShowPostsViewController
@synthesize postsTableView;


- (void)viewDidLoad
{
    [super viewDidLoad];

    self.postsTableView.delegate = self;
    self.postsTableView.dataSource = self;
    NSLog(@"Delegate set");

    [postsTableView beginUpdates];
    NSMutableArray *tempArray = [[NSMutableArray alloc] init];
    for(int i=0; i<8; i++){
        [tempArray addObject: [NSIndexPath indexPathForRow:i inSection:0]];
    }
    [postsTableView insertRowsAtIndexPaths:tempArray withRowAnimation:UITableViewRowAnimationAutomatic];
    NSLog(@"Updates Called");


    [postsTableView endUpdates];
    [postsTableView reloadData];
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 8;
}

//PostTableViewCell is my custom Cell that I want to display
-(PostTableViewCell*)tableView: (UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    PostTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if(!cell){
        cell = [[PostTableViewCell alloc]initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"cell"];
    }
    return cell;
}

//This method is not called for some reason
-(CGFloat)tableview: (UITableView*)tableView heightForRowAtIndexPath: (NSIndexPath*) indexPath{
    NSLog(@"Height Method called");
    CGFloat returnValue = 1000;
    return returnValue;
}

//This method is called
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{
    NSLog(@"Section Number called");
    return 1;
}
@end

Interface Builder の ShowPostsViewController にリンクされた tableView も取得しました。 http://s7.directupload.net/images/130525/6e373mth.png

皆様の多大なご支援に感謝いたします。

4

1 に答える 1

22

あなたはこの間違いのために自分自身を蹴るつもりです. メソッドを実装しました:

-(CGFloat)tableview: (UITableView*)tableView heightForRowAtIndexPath: (NSIndexPath*) indexPath

しかし、実際のデリゲート メソッドは次のようになります。

-(CGFloat)tableView: (UITableView*)tableView heightForRowAtIndexPath: (NSIndexPath*) indexPath

唯一の違いは の大文字VですtableViewv間違って小文字があります。

この種の間違いを避けるために、Xcode でコード補完をできるだけ多く利用するようにしてください。

于 2013-05-25T18:19:05.063 に答える