MAK113
MAK113

Reputation: 1444

cellForRowAtIndexPath is not called?

My cellForRowAtIndexPath does not fire everytime I set dataSource and delegate to the file owner. I also set referencing outlet. I also try tbl.delegate=self; and tbl.datasource=self; but it does not work.

What can I do?

   -(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];
   }

//This code is of 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;
   }

Please solve my problem. You didn't get anything then please tell me.

Upvotes: 0

Views: 244

Answers (3)

AlKozin
AlKozin

Reputation: 916

You should set dataSource and delegate. When you do this, check tbl. Maybe it nil? If not check what value returns

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

If you implement

  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

check it.

No more options.

Upvotes: 0

Heckscheibe
Heckscheibe

Reputation: 640

Or you can check if you have a fault in your data array, because if its size is 0, there are no rows in a section and no cells within these rows as well and cellForRowAtIndexPath is never called...

Upvotes: 0

Savitha
Savitha

Reputation: 561

You need to set Table DataSource in order to tableView to construct table rows.

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

Upvotes: 1

Related Questions