UITableView中单元格内的UILabel始终为空(两个单元格原型)
我试图在表格视图中填充单元格(我有两个自定义类型的单元格,其中包含使用标识符“info_cell”和“person_cell”创建的不同元素,在UITableView之上的分段控制上,我决定加载[tableView reload])。当我尝试访问单元格内的UILabels时,我得到的标签为空。UITableView中单元格内的UILabel始终为空(两个单元格原型)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = (viewType == INFO_VIEW) ? @"info_cell" :@"person_cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
if(viewType == INFO_VIEW){
NSLog(@"INFO = %@", info_text_some_string);
UILabel *lblInfo = (UILabel *)[cell viewWithTag:200];
[lblInfo setText:info_text_some_string];
}
else{
// there is part for person
}
return cell;
}
相同的代码工作时,我只有一个原型单元格内的表(UITableView是UIVewController内)。可以采取什么问题就在这里,我已经检查100次:小区标识符都行,标签标记为200
这是UISegmentControl
- (IBAction)changeView:(id)sender {
UISegmentedControl *segmentedControl = (UISegmentedControl *) sender;
NSInteger selectedSegment = segmentedControl.selectedSegmentIndex;
if (selectedSegment == 0) {
viewType = INFO_VIEW;
}
else{
viewType = PERSON_VIEW;
}
[tableView reloadData];
}
我已经加入和必要的方法行动的tableView并连接代表我数据源。 有没有人有任何想法为什么它为空?
为什么不做这样的事情?
[[cell textLabel] setText: @"text goes here"];
并跳过UILabel部分?
我现在增加了,它是自定义类型的单元格上有不同的元素 – 2013-03-18 21:54:37
试试这个通常我按照这个过程,每当我与自定义单元格去CellRorRowAtIndexPath
if(!cell)
{
cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
//customcell is your UITableViewCell created by you in ur xib
NSData *archivedData =[NSKeyedArchiver archivedDataWithRootObject:customcell];
cell =[NSKeyedUnarchiver unarchiveObjectWithData:archivedData];
}
if(viewType ==INFO_VIEW)
{
[(UILabel *)[cell viewWithTag:200] setText:@"you text"];
}
else{
// person view....
}
这样你收集你的你的所有元素,并为其设定值。分享你的效果好吗
假设你有正确继承你的UITableViewCells(我用InfoCell和PersonCell为例),你可以试试这个:
if(viewType == INFO_VIEW)
{
InfoCell *cell = (InfoCell *)[tableView dequeueReusableCellWithIdentifier:@"info_cell"];
// do your stuff for info here
}
else if(viewType == PERSON_VIEW)
{
PersonCell *cell = (PersonCell *)[tableView dequeueReusableCellWithIdentifier:@"person_cell"];
// do your stuff for person here
}
您可以发布它为你工作的解决方案,因为我面临类似的问题.. – Shivaay 2014-06-20 21:36:08