-1

我已经在网上搜索以了解如何创建自定义表格视图(因为我想隐藏特定视图的导航栏)并且我正在遵循每个步骤。但是,我的结果没有显示表格。

这是我的 .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”和数据源,将表格视图的委托也设置为“HallFameControllerViewController”。结果,标签在那里但没有表格。

我在侧面 .m 文件中有一些 printf() 语句,执行了 viewDidLoad() 但 cellForRowAtIndexPath() 没有!

我在这里做错了什么?此外,什么是 cellIdentifier,为什么设置为“Cell”(自动)?

提前致谢。

4

1 回答 1

0

你需要扩展UITableViewController,而不是UIViewController。然后您不需要将UITableViewDataSourceorUITableViewDelegate协议添加到您的接口声明中。

您可以使用普通视图控制器,但它的工作量更大。您实际上从未在任何地方添加 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 回答