2013-03-18 52 views
1

我试图在表格视图中填充单元格(我有两个自定义类型的单元格,其中包含使用标识符“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并连接代表我数据源。 有没有人有任何想法为什么它为空?

+0

您可以发布它为你工作的解决方案,因为我面临类似的问题.. – Shivaay 2014-06-20 21:36:08

回答

-1

为什么不做这样的事情?

[[cell textLabel] setText: @"text goes here"]; 

并跳过UILabel部分?

+0

我现在增加了,它是自定义类型的单元格上有不同的元素 – 2013-03-18 21:54:37

0

试试这个通常我按照这个过程,每当我与自定义单元格去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.... 
     } 

这样你收集你的你的所有元素,并为其设定值。分享你的效果好吗

0

假设你有正确继承你的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 
} 
相关问题