2012-02-03 3 views
1

Мне нужна UITableView, первая строка которой должна содержать логотип, а в других строках должны отображаться другие таблицы. Я попытался следующий код:Разная первая строка для UITableView

if(indexPath.row == 0) { 
    //Code for imageview 
} else { 
    //Code to display array content 
} 

Моя проблема заключается в том, что я не получаю первый элемент массива в виде таблицы.

Edited ::

if (indexPath.row == 0) { 

     CGRect myImageRect = CGRectMake(120.0f, 5.0f, 70.0f, 55.0f); 
     UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect]; 
     [myImage setImage:[UIImage imageNamed:@"logo.png"]]; 
     [cell.contentView addSubview:myImage]; 
    } 
    else { 

     NSDictionary *dict = [menuitems objectAtIndex:indexPath.row]; 

     cell.textLabel.text =[dict objectForKey:@"category"]; 
     } 
+0

if (indexPath.row == 0) является правильным, можете ли вы опубликовать код кода для просмотра изображений ----? –

ответ

8

Попробуйте использовать headerview. Используйте следующий код для размещения логотипа в верхней части строки.

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ 

    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]; 
    UIImageView *myimgvw = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]; 
    [myimgvw setImage:[UIImage imageNamed:@"logo.png"]]; 
    [myView addSubview:myimgvw]; 

    return myView; 
} 
+0

Спасибо за ответ. Когда я добавлю это, изображение заголовка накладывает первую строку uitableview. Как я могу это преодолеть? – nithin

+0

Перейти к файлу xib-> Выберите эту таблицу-> Проверить размер окна таблицы-> Поместите значение в поле заголовка «50» или что угодно. – Rupesh

0

Затем вам нужно положить использовать indexPath-1, чтобы показать текст вместо indexPath в еще части выше фрагмента кода.

1

Вы не показали свой код, который отображает содержимое массива, но я предполагаю, что вы используете что-то вроде

[dataArray objectAtIndex:indexPath.row]; 

Но поскольку вы показываете изображение в строке 0, необходимо, чтобы компенсировать это, - 1. Другими словами, вторая строка в вашей таблице будет иметь indexPath.row = 1, но вам нужно, чтобы это было objectAtIndex: 0.

+0

Следуя вашей идее, у вас не будет последнего элемента массива. – androniennn

+0

@androniennn Я не понимаю, почему это так. Пока вы возвращаете размер массива + 1 для количества ячеек, тогда нет проблем. –

+0

Да, точно, в делегате 'numberofrows' мы возвращаем массив 1, и тогда у нас всегда будет последний элемент. Это была моя вина. Я проверял 'if (indexPath.row == 0)', а затем возвратил customCell1 else return 'indexPath.row-1' customCell2, таким образом у меня никогда не будет последнего элемента. – androniennn

Смежные вопросы