На ваш второй вопрос:
tableView.style = UITableViewStyleGrouped;
Или, если вы создаете это программно:
tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStyleGrouped];
На ваш первый вопрос, я предполагаю, что вы настраиваете свои клетки примерно так:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
...
setupCell(cell,indexPath.row);
return cell;
}
Где setupCell - это то, что проверяет индекс и соответственно устанавливает ячейку. Однако IndexPath сообщает, какую строку в каком разделе настроить.
Я также предполагаю, что вы возвращаете полное количество строк в функции
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
Где вы должны возвращать только 1, так как вы хотите ровно 1 строку в каждом разделе.
Тогда при настройке вашей ячейки вы захотите установить indexPath.section
вместо indexPath.row
. Строки начинаются с нуля по разделам, поэтому вызовы cellForRowAtIndexPath
будут иметь индексные пути, которые выглядят следующим образом:
Секция Row
0, 0
1, 0
2, 0
Тогда как изначально, когда у вас был только один раздел, это было бы:
0, 0
0, 1
0, 2
И то, что вы видите прямо сейчас, поскольку вы возвращаете столько же строк, сколько и разделов:
0, 0
0, 1
0, 2
1, 0
1, 1
1, 2
2, 0
2, 1
2, 2