Обходной путь для получения textAlignment по центру в UITableViewCellStyleSubtitle - PullRequest
3 голосов
/ 18 марта 2011

Согласно этому вопросу (и многим многим результатам поиска в Google), когда мы находимся в табличном представлении, и мы установили в ячейках значение UITableViewCellStyleSubtitle, мы были вынуждены выровнять наши текстывнутри метки ячейки слева.

Однако я хочу, чтобы одна из строк (фактически строки) моего табличного представления была выровнена по центру ... Очевидно, это не сработает:

cell.textLabel.textAlignment = UITextAlignmentCenter;

Так что я подумал, что мне делать вместо этого ... Я не уверен, как сделать это чисто.Лучший способ, которым я могу придумать, - это изменить эту конкретную ячейку так, чтобы стиль ячейки был UITableViewCellStyleDefault, но я не думаю, что свойство ячейки является изменяемым.Другой способ, который я могу придумать, - это создать подкласс класса UITableViewCell, но это кажется излишним просто для одной ячейки табличного представления.Как вы думаете, что я должен сделать, чтобы выровнять этот последний ряд по центру?

РЕДАКТИРОВАТЬ: для тех из вас, кто заинтересован в ответе:

static NSString *CellIdentifier = @"Cell";
static NSString *CellIdentifierDefault = @"CellDefault";

UITableViewCell *cell; // = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier];  

  if (indexPath.row >= [data count])
        cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifierDefault];
    else
        cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil && indexPath.row < [data count]) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }
    else if(cell == nil && indexPath.row >= [data count]) { 
        //Use default style for the last cell.
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierDefault] autorelease];
    }

Ответы [ 3 ]

2 голосов
/ 18 марта 2011

@ the_great_monkey:

Вы можете изменить cellIdentifier для ячейки, в которой вы хотите это выравнивание по центру.

Для остальных ячеек вы должны оставить одну общую cellIdentifier.

Тогда, когда вы делаете это

cell.textLabel.textAlignment  = UITextAlignmentCenter;
cell.detailTextLabel.textAlignment  = UITextAlignmentCenter;

Тогда вам просто нужно проверить, является ли cellIdentifier ячейкой, для которой требуется выравнивание по центру?

Если да, то применять,

cell.textLabel.textAlignment = UITextAlignmentCenter; и cell.detailTextLabel.textAlignment = UITextAlignmentCenter; для этой ячейки.

Надеюсь, это поможет вам.

0 голосов
/ 15 мая 2013
cell.textLabel.textAlignment=UITextBorderStyleLine;
0 голосов
/ 18 марта 2011

Легко загрузить ячейку из .xib, что позволяет вам организовать подпредставления ячейки любым удобным вам способом.К сожалению, свойства textLabel и detailTextLabel в UITableViewCell не являются IBOutlets, поэтому вы не можете подключить метки, которые вы хотели бы использовать для этих свойств в IB.

Один из способов справиться с этим - подключить эти представления квместо этого, используйте выходы в контроллере и используйте их при настройке ячейки в -tableView: cellForRowAtIndexPath :.Это хорошо, если вам не нужно будет менять содержимое ячейки позже.В этом случае вы можете просто создать перо, содержащее UITableViewCell, установить тип владельца файла, соответствующий вашему контроллеру, и настроить подпредставления ячейки, как вам нравится, и подключить их к владельцу файла.См. Загрузка пользовательских ячеек TableView из файлов пера для получения дополнительной информации.

Другой способ - создать подкласс UITableViewCell, который имеет выходы для текстовой метки и метки сведений.Затем сделайте то же самое, что и выше, но используйте ваш подкласс, а не UITableViewCell.После того, как вы создали этот подкласс, вы можете использовать его с разными .xibs, если вам нужны разные макеты в какой-то момент.Работа, необходимая для создания подкласса, минимальна, и она становится полезным и многократно используемым инструментом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...