UITableViewController没有调用Delegate和DataSource方法

时间:2015-11-30 08:22:48

标签: ios objective-c xcode uitableview cocoa-touch

我是ios dev中的新手,我正在尝试使用Array of HCPerson类填充表视图。我也在玩,通过代码将nib中创建的对象引入故事板。但无论我做什么,表都没有填充

#import "HCTableViewController.h"
NSString *const HCTableCellNibName=@"HCTableCell";
NSString *const HCCellIdentifier=@"personCell";
@interface HCTableViewController()

@end
@implementation HCTableViewController
-(void)viewDidLoad
{
    [super viewDidLoad];
    [self.tableView registerNib:[UINib nibWithNibName:HCTableCellNibName bundle:nil] forCellReuseIdentifier:HCCellIdentifier];

}


-(NSInteger)tableView:(UITableView*)tableView numberOfRowInSection:(NSInteger)section
{
    return self.persons.count;
}

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
    UITableViewCell* cell=(UITableViewCell*)[self.tableView dequeueReusableCellWithIdentifier:HCCellIdentifier forIndexPath:indexPath];
    HCPerson *person=self.persons[indexPath.row];

    [self configureCell:cell forPerson:person];
    return cell;

}

-(void)configureCell:(UITableViewCell*)cell forPerson:(HCPerson*)person
{
    cell.textLabel.text=person.name;
    cell.detailTextLabel.text=[[NSNumberFormatter alloc] stringFromNumber:person.age];
}
@end

//HCPerson
#import "HCPerson.h"

@interface HCPerson()

@end
@implementation HCPerson
+(HCPerson*)personWithName:(NSString*)name age:(NSNumber*)age residence:(NSString*)residence contact:(NSString *)contact
{
    HCPerson *newPerson=[[self alloc] init];

    newPerson.name=name;
    newPerson.age=age;
    newPerson.residence=residence;
    newPerson.contact=contact;

    return newPerson;
}
@end

编辑:Karthik使用UIViewController解决了这个问题,并从中取出了TableView。但有没有办法使用UITableViewController

调用委托和数据源方法

2 个答案:

答案 0 :(得分:1)

好吧,试试你的viewDidLoad

-(void)viewDidLoad
{
[super viewDidLoad];
[self.tableView registerNib:[UINib nibWithNibName:HCTableCellNibName bundle:nil] forCellReuseIdentifier:HCCellIdentifier];

 if ( self.persons.count>0)
{
[self.yourtableview reloadData];
}
else
{
// no data found , put the NSLog and print the count

}

确定选择no-2

试试这个

UITableViewCell* cell=(UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:HCCellIdentifier forIndexPath:indexPath];

删除该self,因为它显示的是该方法。不是Tableview,而是使用与tableView不同的名称,因为Xcode发现很难从中选择一个。

答案 1 :(得分:0)

您是否从故事板添加了表视图控制器? 如果是,请转到storyborad - > Inspector Area - > File Inspector - 在那里添加您的类名。

Screenshot attached.