Поставьте галочку в левой части UITableViewCell - PullRequest
28 голосов
/ 06 января 2012

Я хочу сделать что-то похожее на страницу настроек WiFi: когда вы нажимаете на ячейку таблицы, поставьте флажок в левой части ячейки, и справа отобразится вспомогательный вид кнопки раскрытия, чтобы показать больше деталей.

Мой вопрос: есть ли способ поставить галочку в левой части UITableViewCell, не создавая пользовательский UITableViewCell?

Ответы [ 6 ]

123 голосов
/ 01 октября 2012

Ответ ДА!Вам не нужно создавать собственную ячейку для этого или добавлять изображения.Чтобы смоделировать флажки, вам нужно только добавить символ Unicode для состояния флажка к тексту ячейки.

Символы Unicode, которые я использую для флажков: \u2705 для отмеченного и \u2B1C для непроверенноготакой же как \U0001F533 на iOS 5).iOS отображает несколько символов Юникода в виде значков .

Вот некоторые другие символы:

enter image description here

@"\u2611", @"\u2B1C", @"\u2705", @"\u26AB", @"\u26AA", @"\u2714", @"\U0001F44D", @"\U0001F44E"

Имитация страницы настроек Wi-Fi (с UITableViewCellStyleValue1):

enter image description here

cell.textLabel.text = @"\u2001 Wi-Fi 1";
cell.detailTextLabel.text = @"\U0001F512 \u268A";

cell.textLabel.text = @"\u2001 Wi-Fi 2";
cell.detailTextLabel.text = @"\U0001F512 \u268C";

cell.textLabel.text = @"\u2713 Wi-Fi 3";
cell.detailTextLabel.text = @"\U0001F513 \u2630";
6 голосов
/ 06 января 2012

Конечно, вы можете сделать это :) Например, используйте UITableViewCellStyle

UITableViewCellStyleDefault,
// Simple cell with text label and optional image view
//(behavior of UITableViewCell in iPhoneOS 2.x)

... и поместите пользовательское изображение «галочки» в этот «дополнительный вид изображения».

0 голосов
/ 27 сентября 2016

В Swift вы можете нажать Ctrl + Ctrl + Пробел, чтобы показать смайлики и специальные символы, или вы можете скопировать это ✓ ✔️

0 голосов
/ 02 сентября 2016

Итак, вот способ сделать это. Поместите UIImageView на левый край ячейки. Не устанавливайте изображение, чтобы оно было пустым для начала.

Затем, если вы делаете пользовательскую ячейку и класс для этого UITableViewCell, сделайте что-то вроде этого:

import UIKit

class MyCustoTableViewCell: UITableViewCell {

    @IBOutlet weak var commandOption: UILabel!
    @IBOutlet weak var checkMarkImage: UIImageView!

    // Sets a left side checkmark on a cell when selected 
    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        self.checkMarkImage.image = selected ? UIImage(named: "BlueCheck") : .None
        self.commandOption.font = selected ? UIFont(name: "Avenir-Heavy", size: 22) : UIFont(name: "Avenir-Book", size: 22)

        // more check mark on the right side
        // self.accessoryType = selected ? .Checkmark : .None
    }
}

Обратите внимание, что нижний комментарий закомментирован, если вы хотите поставить галочку справа. Метод super.setSelecdted срабатывает, когда пользователь коснулся ячейки таблицы. Убедитесь, что это реализовано также:

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        // do any changes needed here or leave blank if just adding check
     }
}

Наконец, убедитесь, что в папке «Ресурсы» есть активы PNG с отметками @ 2x и @ 3x. Обратите внимание, что в этом примере они называются «BlueCheck», но используйте, как всегда, ваши активы галочки.

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

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

0 голосов
/ 06 января 2012

Вам следует обратиться к справочнику UITableViewCell и руководству по табличному просмотру . Использовать стандартный стиль ячейки со свойством editingAccessoryType, установленным на UITableViewCellAccessoryCheckmark.

0 голосов
/ 06 января 2012

Нет.Для этого вам нужно создать собственную ячейку.

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