我一直UITableView
的UIViewController
,我已经从出口和delegete和数据源连接分配给自己。 numberOfSectionsInTableView
和numberOfRowsInSection
越来越叫我尝试使用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我正在做提前的错误感谢
看来numberOfSectionsInTableView
和numberOfRowsInSection
返回是0。如果是这种情况,那么将的cellForRowAtIndexPath不会被调用..
从评论above..it似乎“YourAppDelegate”变量为null
或yourArray是null
。尝试保持破发点上的这些代表,以检查他们返回的值
试试这个新增委托和数据源在.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
}
看来numberOfSectionsInTableView
和numberOfRowsInSection
返回0或者可能是另一个原因
仔细检查点以下
1,如果你是从XIB创建TableView中的应设置数据源和委托给文件所有者英寸
如果你是编程创建它,那么你应该设置委托和数据源,如下,不要忘记采取dataSourec
并delegate
了UItableView
在.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 .
}
我希望它会帮助你
如果您在您的应用程序启用多线程的概念,即使你调用reloadData
的方法tableview
cellForRowAtIndexPath
不会有时也被称为。 所以这样调用realod方法:
[self performSelectorOnMainThread:@selector(reloadTable) withObject:self waitUntilDone:NO];
它可能工作。
- (void)reloadTable
{
[self.tableView reloadData];
}
如果你不是在多线程环境中,那么你需要确保tableviews
delegate
和datasource
不为空。
检查“numberOfRowsInSection”方法的数组中的数值。 在返回值之前打印您阵列。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"%@",returnedArray);
return [returnedArray count];//
}
你也可以尝试发送您的方法来检查行的一些静态数。
它看起来像你的阵列,在该方法越来越空。
希望它可以解决您的问题。