2012-07-05 3 views
3

Custom UITableViewCell in UITableViewПользовательские UITableViewCell не показывает метки в раскадровке

enter image description here

В этом скриншоте вы можете увидеть, что я добавил UITableView в UIViewController затем подгоняли UITableViewCell, добавив некоторые ярлыки в нем. Но проблема в том, что я запускаю приложение. Все ячейки пустые. Нет ярлыков.

Empty Cells

Я не получаю то, что может быть проблемой. Я искал в Интернете и читал учебники, но не смог его решить.

+1

Как вы добавлять ячейки в виде таблицы? Можете ли вы вставить методы делегата в виде таблицы. –

ответ

4

Я решил эту проблему самостоятельно, сразу после небольшого усилия.
На самом деле при создании пользовательской ячейки вы должны сделать эти вещи:

  1. установки на этикетки, изображения и т.д. на раскадровке ячейку.
  2. Создайте собственный класс ячеек (наследующий от UITableViewCell) (CustomCell.h & .m), CustomCell.h имеет все свойства как iboutlet для меток, изображений и т. Д. И синтезирует их все в реализации.
  3. После создания этого пользовательского класса вернитесь к раскадровке, выберите пользовательскую ячейку, измените ее класс на CustomCell и дайте ему некоторый идентификатор, например «MyCustomCell», затем щелкните правой кнопкой мыши на пользовательской ячейке и подключите IBOutlets с метками и т. Д.
  4. Теперь импортируйте класс CustomCell в класс, в котором реализуется UITableView, и используйте свойства, определенные вами в классе CustomCell.

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
        static NSString *MyIdentifier = @"MyCustomCell"; 
    
        CustomCell*cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    
        if (cell == nil) 
        { 
         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                 reuseIdentifier:MyIdentifier] autorelease]; 
        } 
    
        // 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.imageView setImageWithURL:[NSURL URLWithString:@"http://example.com/image.jpg"] 
            placeholderImage:[UIImage imageNamed:@"placeholder"]]; 
         cell.myCustomLabel.text = @"My Text"; 
        return cell; 
    } 
    

Я сделал все это, и мой вопрос был решен, и пожалуйста, не забудьте подключить делегат & источника данных и таблицу.

Надеюсь, это поможет другим.

+0

Не должно [UITableViewCell alloc] фактически быть [CustomCell alloc] –

+0

Важной частью является идентификатор ячейки. Удостоверьтесь, что это то же самое как в методе раскадровки, так и в методе tableView: cellForRowAtIndexPath. –

0

в методе делегата tableview, cellforrowatindexpath имеет внутри себя ячейку uitableviewcell, в инициализации этой ячейки должен быть идентификатор. возможно, это «ячейка» или «cellIdentifier».

вам просто нужно выбрать свою ячейку из раскадровки и ввести эту строку идентификатора в раскадровку, где хранится инспектор атрибутов uitableviewcell.

надеюсь, что это помогает .. :)

1

Это немного поздно, но вы можете решить вашу проблему, установив цвет фона на ваш взгляд, как Clear Color от раскадровку.

0

Первый сет идентификатор соты в раскадровке @ «Cell»

затем установите тег этикетки

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

// Create 
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ; 
} 



UILabel *lblDate = (UILabel*)[cell viewWithTag:101]; 
UILabel *lblDistance = (UILabel*)[cell viewWithTag:102]; 
UILabel *lbltype = (UILabel*)[cell viewWithTag:103]; 

lblDate.text = [temp objectAtIndex:indexPath.row] valueForKey:@"date"] stringByReplacingOccurrencesOfString:@"-" withString:@"/"]]; 
lblDistance.text = [NSString stringWithFormat:@"%@ KM",[[temp objectAtIndex:indexPath.row] valueForKey:@"distance"]]; 

NSString *type = [NSString stringWithFormat:@"%@",[[temp objectAtIndex:indexPath.row] valueForKey:@"distance"]]; 
if([type isEqualToString:@"0"]) 
{ 
    lbltype.text = @"Personal"; 
} 
else 
{ 
    lbltype.text = @"Bussiness"; 
} 
// Configure 
return cell; 
} 
Смежные вопросы