-tableView:的cellForRowAtIndexPath:是没有得到所谓的(-tableV

2019-09-24 08:04发布

我一直UITableViewUIViewController ,我已经从出口和delegete和数据源连接分配给自己。 numberOfSectionsInTableViewnumberOfRowsInSection越来越叫我尝试使用NSLog ,但cellForRowAtIndexPath没有得到调用我的代码看起来像

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSLog(@" cellForRowAtIndexPath ");

    static NSString *CellIdentifier = @"CurrencyCell";

    CurrencyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[CurrencyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] ;
    }
    new *Obj = [appdelegate.array objectAtIndex:indexPath.row];


    cell.CurNameLabel.text = Obj.C_Name;
    cell.textLabel.text = @"sdfnhsdfndsio;";
    NSLog(@"C_Name %@", Obj.C_Name);

    return cell;
}

可以在任何一个电话WER我正在做提前的错误感谢

Answer 1:

看来numberOfSectionsInTableViewnumberOfRowsInSection返回是0。如果是这种情况,那么将的cellForRowAtIndexPath不会被调用..

从评论above..it似乎“YourAppDelegate”变量为null或yourArray是null 。尝试保持破发点上的这些代表,以检查他们返回的值



Answer 2:

试试这个新增委托和数据源在.h文件中像下面..

@interface AddProjectViewController : UIViewController<
UITableViewDataSource,UITableViewDelegate>
.....
@end

在后viewDidLoad:把这个代码..

    - (void)viewDidLoad
   {
        yourTableView.delegate= self;
        yourTableView.dataSource=self;
   }

在最后尝试这种在numberOfRowsInSection方法返回一些int值大于0

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [yourArray count];//or any int value
}


Answer 3:

看来numberOfSectionsInTableViewnumberOfRowsInSection返回0或者可能是另一个原因

仔细检查点以下

1,如果你是从XIB创建TableView中的应设置数据源和委托给文件所有者英寸

如果你是编程创建它,那么你应该设置委托和数据源,如下,不要忘记采取dataSourecdelegateUItableView.h

   YourViewController : UIViewController<UITableViewdelegate, UITableViewDatasource>

把代码的下面一行刚过,你正在创建的UITableView线路

        tableViewObj.delegate= self;
        tableViewObj.dataSource=self

2仔细检查贵datasource (无论阵列的名称)拥有的数据,因为当你创建的行数你传递数组`算作给出以下

  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
     {  
      int  numberOfRows= [datasource count];
      return numberOfRows;
      //  here check does the `numberOfRows` have nonzero value or just 0
      if it retunes 0 then cellForAtIndexPath would not call .
   }

我希望它会帮助你



Answer 4:

如果您在您的应用程序启用多线程的概念,即使你调用reloadData的方法tableview cellForRowAtIndexPath不会有时也被称为。 所以这样调用realod方法:

[self performSelectorOnMainThread:@selector(reloadTable) withObject:self waitUntilDone:NO];

它可能工作。

- (void)reloadTable
{
    [self.tableView reloadData];
}

如果你不是在多线程环境中,那么你需要确保tableviews delegatedatasource不为空。



Answer 5:

检查“numberOfRowsInSection”方法的数组中的数值。 在返回值之前打印您阵列。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSLog(@"%@",returnedArray);
    return [returnedArray count];//
}

你也可以尝试发送您的方法来检查行的一些静态数。

它看起来像你的阵列,在该方法越来越空。

希望它可以解决您的问题。



文章来源: -tableView:cellForRowAtIndexPath: is not getting called