我在网上搜索了解如何创建自定义表格视图(因为我想隐藏特定视图的导航栏),我正在完成每一步。但是,我的结果不会显示表格。
这是我的.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的Custom Class设置为“HallFameControllerViewController”和dataSource,也将Table View的委托设置为“HallFameControllerViewController”。结果,标签在那里,但没有桌子。
我在.m文件中有一些printf()语句,viewDidLoad()已经执行但是cellForRowAtIndexPath()没有!
我在这里做错了什么?另外,什么是cellIdentifier以及为什么设置为“Cell”(自动)?
提前致谢。
答案 0 :(得分: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;
}