是不是调用了cellForRowAtIndexPath?

时间:2013-11-27 14:56:55

标签: ios uitableview

我的cellForRowAtIndexPath不会每次都开火 我将dataSourcedelegate设置为文件所有者。 我还设置了引用插座。 我也尝试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;
   }

请解决我的问题。 你没有得到任何东西,请告诉我。

3 个答案:

答案 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
检查它。

没有其他选择。