2013-11-27 2 views
0

Мой cellForRowAtIndexPath не срабатывает каждый раз Я установил dataSource и delegate владельцу файла. Я также установил ссылку на выход. Я также пробовал tbl.delegate=self; и tbl.datasource=self;, но он не работает.cellForRowAtIndexPath не называется?

Что я могу сделать?

-(void)load 
    { 
     [name resignFirstResponder]; 
     [salary resignFirstResponder]; 
     [email protected]""; 
     [email protected]""; 
     [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; 
    } 

Пожалуйста, решить мою проблему. Вы ничего не получили, пожалуйста, скажите мне.

+2

Вы должны зарегистрировать tbl, а значения, возвращаемые tableView: numberOfRowsInSection: – jbat100

+0

Когда, в частности, это не называется? – Wain

ответ

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; 
    } 
0

Или вы можете проверить, если у вас есть неисправность в вашем массиве данных, потому что, если его размер 0, нет строки в секции и нет ячеек в этих строках, а также и cellForRowAtIndexPath никогда не называется .. .

0

Вы должны установить dataSource и делегировать. Когда вы это сделаете, проверьте tbl. Может, это ноль? Если не проверить, какое значение возвращает

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

Если вы реализуете

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

проверить.

Нет больше вариантов.

Смежные вопросы