簡體   English   中英

cellForRowAtIndexPath不被調用?

[英]cellForRowAtIndexPath is not called?

每次設置dataSource並將其delegate給文件所有者時,我的cellForRowAtIndexPath不會觸發。 我還設置了引用出口。 我也嘗試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;
   }

請解決我的問題。 您什么都沒得到,請告訴我。

您需要設置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,則說明某節中沒有行,並且這些行中也沒有單元格,並且永遠不會調用cellForRowAtIndexPath ...

您應該設置數據源和委托。 執行此操作時,請檢查tbl。 也許沒有? 如果沒有檢查返回什么值

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

如果實施

  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

核實。

沒有更多選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM