iOS TableView重复调用numberOfRowsInSection

时间:2015-05-21 03:42:37

标签: ios objective-c uitableview delegates

我以编程方式设置TableView数据源和委托,并且还将必要的代码添加到视图控制器的头文件中。

在对numberOfRowsInSectionnumberOfSectionsInTableView方法进行硬编码以返回1并添加相应的日志之后,我注意到这两种方法都被重复调用(4次),但方法cellForRowAtIndexPath没有&#39 ;被叫一次。

TableView没有显示在屏幕上,但我认为这是因为没有呈现单元格,但在对包括cellLabel文本在内的所有内容进行硬编码后,我不会了解如何一遍又一遍地调用这两种方法,但跳过cellForRowAtIndexPath方法。

日志如下所示:

  

2015-05-20 22:39:09.595 SchoolAnalytics [28419:2137236]#section

     

2015-05-20 22:39:09.595 SchoolAnalytics [28419:2137236]行数   第0节

     

2015-05-20 22:39:09.595 SchoolAnalytics [28419:2137236]#section

     

2015-05-20 22:39:09.595 SchoolAnalytics [28419:2137236]行数   第0节

     

2015-05-20 22:39:09.598 SchoolAnalytics [28419:2137236]#section

     

2015-05-20 22:39:09.598 SchoolAnalytics [28419:2137236]行数   第0节

     

2015-05-20 22:39:09.598 SchoolAnalytics [28419:2137236]#section

     

2015-05-20 22:39:09.598 SchoolAnalytics [28419:2137236]行数   第0节

我如何加载细胞:

    - (void)viewDidLoad {
    [super viewDidLoad];
    targetList.delegate = self;
    targetList.dataSource = self;

// Do any additional setup after loading the view.
     }

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {
     NSLog(@"# of sections");
     return 1;    //count of section
 }


 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
     NSLog(@"Number of rows for section %li", (long)section);
     return 1;
 }



 - (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
    NSLog(@"CELL FOR ROW");
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView      dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
     {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                  reuseIdentifier:MyIdentifier];
     }

     // Here we use the provided setImageWithURL: method to load the web image
     // Ensure you use a placeholder image otherwise cells will be initialized with no image

    cell.textLabel.text = @"Cell 1";
    return cell;
           }

我的头文件有两个代表

     @interface ClassViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>

可能很重要的是,这不是根视图,它是一个segue,并且在加载此视图时,在顶部添加了一个子视图,它是UIView的子类,必须是绘制。

2 个答案:

答案 0 :(得分:0)

只要您在表格视图上调用numberOfRowsInSection,就会调用

numberOfSectionsInTableViewreloadData

答案 1 :(得分:0)

每次加载数据时都会调用这些委托方法numberOfRowsInSectionnumberOfSectionsInTableView。就像你打电话[table reloadData] 5次一样,每次都会调用这些方法。