-1

カスタムテーブルビューを作成する方法を学ぶためにWebを検索し(特定のビューのナビゲーターバーを非表示にしたいため)、各手順を実行しています。ただし、私の結果ではテーブルが表示されません。

これが私の.hファイルです

#import <UIKit/UIKit.h>

@interface HallFameControllerViewController : UIViewController
    <UITableViewDelegate, UITableViewDataSource>{

    NSArray *leaders;
}

@property (strong, nonatomic) NSArray *leaders;

@end

と私の.mファイル

#import "HallFameControllerViewController.h"

@interface HallFameControllerViewController ()

@end

@implementation HallFameControllerViewController

@synthesize leaders;

- (void)viewDidLoad
{
    [super viewDidLoad];
    leaders = [NSArray arrayWithObjects:@"Player #1", @"Player #2", @"Player #3", nil];
}

- (void) viewDidUnload{

    self.leaders = nil;
}

- (void) viewWillAppear:(BOOL)animated{

    [self.navigationController setNavigationBarHidden:NO];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 0;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return [leaders count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the cell.
    cell.textLabel.text = [self.leaders objectAtIndex: [indexPath row]];
    return cell;
}
@end

ストーリーボードにViewControllerを作成し、その中に1つのラベルと1つのTableViewがあります。ViewControllerのカスタムクラスを「HallFameControllerViewController」に設定し、dataSource、テーブルビューのデリゲートも「HallFameControllerViewController」に設定しました。結果、ラベルはありますが、テーブルはありません。

サイド.mファイルにいくつかのprintf()ステートメントがあり、viewDidLoad()が実行されていますが、cellForRowAtIndexPath()はありません!

私がここで間違っていることは何ですか?さらに、cellIdentifierとは何ですか?なぜ「Cell」に(自動的に)設定されているのですか?

前もって感謝します。

4

1 に答える 1

0

UITableViewControllerではなく、拡張する必要がありUIViewControllerます。UITableViewDataSourceそうすれば、インターフェース宣言にまたはUITableViewDelegateプロトコルを追加する必要はありません。

プレーンビューコントローラを使用できますが、より多くの作業が必要です。UITableViewを実際にどこにも追加したことはありません。テーブルビューメソッドを実装しただけです(これはまだ実行する必要があります)。

を更新する必要がありますnumberOfSectionsInTableView:。0を返すと、他の問題を修正した後でも、空のテーブルが残ります。

したがって、これを変更します。

@interface HallFameControllerViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>{

に:

@interface HallFameControllerViewController : UITableViewController {

そしてこれを変更します:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 0;
}

に:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
于 2012-11-11T23:42:57.890 に答える