2015-04-15 4 views
3

Это привело меня в безумство с тех пор, как я начал это приложение. В основном у меня есть UITableViewCell с изображением и меткой, и я хочу иметь еще один UITableViewCell с изображением и меткой следующего результата рядом с ним в той же строке.iOS Две ячейки в одной строке с данными

Что-то вроде того, что делает PrettyKit, но без использования этой основы:

Pretty Kit Example

Итак ... Скажем, моя база данных Возвращается четыре результата и столбцы идентификатор, текст и изображения. Эти результаты будут id1, text1, image1, id2, text2, image2, id3, text3, image3, id4, text4, image4:

Image1 | Image2 
Text1 | Text2 

Image3 | Image4 
Text3 | Text4 

и так далее.

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

Любые идеи?

ОБНОВЛЕНИЕ: Решено дать UICollectionПросмотреть выстрел, поскольку это кажется лучшим решением для того, что я хочу сделать. Но столкнулся с небольшим количеством проблем, превратив мой TableView в CollectionView. xcode Converting UITableView to UICollectionView (no valid cell)

+2

«И я хочу иметь еще один UITableViewCell с изображением и меткой следующего результата рядом с ним в той же строке» Нет. Это может выглядеть как два блока с двумя парами текста, но это еще один UITableViewCell. Поверь мне в этом. :) – matt

+0

О, я знаю, что это всего лишь одна ячейка. Я просто хотел выяснить, как заполнить его данными из двух разных строк. :) –

+0

Тогда вы думаете об этом неправильно. Ваши данные должны быть структурированы таким образом, чтобы это было _one_ «строка». Одна строка с большим количеством данных, чем другие строки. – matt

ответ

5

Для этого Вы можете использовать UICollection view controller.

Или Если вы хотите использовать Table view, то создайте custom cell согласно вашему требованию.

+1

http://stackoverflow.com/questions/29696626/ не Xcode-превращающий UITableView к uicollectionview-не-действительные ячеек –

1

Ваш источник данных должен быть массивом пользовательских объектов (обладающих свойствами для левого текста, правого текста, левого изображения, правильного изображения) или массива словарей. что-то вроде этого,

@[@{@"text1":@"whatever", "text2":@"something else", @"image1:@"someImageName.jpg", @"image2": @"someOtherImageNamejpg"}, @{@"text1":@"another string", "text2":@"yet another string", @"image1:@"differentImageName.jpg", @"image2": @"otherDifferentImageNamejpg"}] 

В контроллере просмотра таблицы, вы заполнить ячейки из этого массива,

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

     CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
     cell.leftLabel.text = self.theData[indexPath.row][@"text1"]; 
     cell.rightLabel.text = self.theData[indexPath.row][@"text2"]; 
     cell.leftImageView.image = [UIImage imageNamed:self.theData[indexPath.row][@"image1"]]; 
     // etc. 
     return cell; 
    } 
+0

Итак ... если я читаю тебя правильно ...Мне нужно было бы назначить свойство «left/right» или «text1/text2» для каждого объекта в моей таблице? –

+0

@mysticcola Если вам нужно заполнить две метки и два изображения, тогда да, каждый объект должен иметь эти 4 части данных. Существуют и другие возможные варианты данных, но это один из способов сделать это. Как ваши данные структурированы сейчас? – rdelmar

+0

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

0

По дизайну табличные представления поддерживают только одну ячейку за строку. Вы могли все еще делать это с видом таблицы, имея пользовательскую ячейку, которая включает ваш контент дважды (влево/вправо), но это имеет некоторые серьезные недостатки. Вы должны делать вычисления указательного пути для всего, что вы делаете. А что, если вы хотите удалить один элемент из списка? В этом случае вам нужно будет перезагрузить все строки под затронутой строкой, потому что то, что было слева, теперь находится справа от ячейки выше. Таким образом, в основном вы теряете большую часть функциональности, которую предоставляет табличный вид, и просто изогните его, чтобы сделать то, для чего он не предназначен.

Итак, какое решение? На самом деле это довольно просто (при условии, что вы нацеливаете iOS6 +): используйте UICollectionView с UICollectionViewFlowLayout.

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