我的cellForRowAtIndexPath
不会每次都开火
我将dataSource
和delegate
设置为文件所有者。
我还设置了引用插座。
我也尝试tbl.delegate=self;
和tbl.datasource=self;
,但它不起作用。
我该怎么办?
-(void)load
{
[name resignFirstResponder];
[salary resignFirstResponder];
name.text=@"";
salary.text=@"";
[tblViewController.data removeAllObjects];
NSString *insertStatement = [NSString stringWithFormat:@"select * from emp"];
sqlite3_stmt *statement;
NSString *path= [self getDBPath];
if (sqlite3_open([path UTF8String], &db) == SQLITE_OK)
{
if (sqlite3_prepare_v2(db, [insertStatement UTF8String], -1,&statement, NULL) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
NSMutableDictionary *record=[[NSMutableDictionary alloc]init];
NSString *nm= [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement,0)];
NSString * sl= [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement,1)];
[record setValue:nm forKey:@"name"];
[record setValue:sl forKey:@"salary"];
NSLog(@"%@ %@",nm,sl);
[tblViewController.data addObject:record];
NSLog(@"%@",tblViewController.data);
}
sqlite3_finalize(statement);
}
sqlite3_close(db);
}
NSLog(@"%lu",(unsigned long)[tblViewController.data count]);
[tblViewController.tbl reloadData];
}
//此代码属于tableviewcontroller.m
#import "tableViewController.h"
#import "ViewController.h"
@interface tableViewController ()
@end
@implementation tableViewController
@synthesize tbl,data;
@synthesize viewOfTable;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
NSLog(@"only for check");
[self setup];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
//[self setup];
tbl.delegate = self;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-( NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-( NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [data count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}
cell.textLabel.text=[[data objectAtIndex:indexPath.row] valueForKey:@
"name"];
cell.detailTextLabel.text=[[data objectAtIndex:indexPath.row]
valueForKey:@"salary"];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//name.text =[[data objectAtIndex:indexPath.row] valueForKey:@"name"];
// salary.text=[[data objectAtIndex:indexPath.row] valueForKey:@"salary"];
}
- (void)setup
{
//Store the whole view in uiView...mac
// [[NSBundle mainBundle] loadNibNamed:@"RegistrationViewController" owner:self options:nil];
viewOfTable=[[UIView alloc]initWithFrame:self.view.frame];
[viewOfTable addSubview:self.view];
self.viewOfTable.translatesAutoresizingMaskIntoConstraints=YES;
}
请解决我的问题。 你没有得到任何东西,请告诉我。
答案 0 :(得分:1)
您需要设置Table DataSource才能使tableView构造表行。
#import "tableViewController.h"
#import "ViewController.h"
@interface tableViewController () <UITableViewDataSource,UITableViewDelegate>
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
tbl.dataSource = self
tbl.delegate = self;
}
答案 1 :(得分:0)
或者您可以检查数据数组是否有错误,因为如果它的大小为0,则节中没有行,并且这些行中也没有单元格,并且从不调用cellForRowAtIndexPath ...
答案 2 :(得分:0)
您应该设置dataSource和delegate。执行此操作时,请检查tbl。也许没有? 如果不检查返回什么值
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
如果您实施
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
检查它。
没有其他选择。