Выяснение имени персонажа Unicode в .Net

Используйте расширение для UITableView для извлечения ячейки для любого вида:

@ Ответ Paulw11 на настройку настраиваемого типа ячейки с свойством делегирования, который отправляет сообщения в представление таблицы, является хорошим путь к работе, но для этого требуется определенная работа.

Я думаю, что ходя по иерархии представлений ячейки таблицы, ища ячейку - плохая идея. Он хрупкий - если вы позже вложите свою кнопку в представление для целей макета, этот код, вероятно, сломается.

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

Я создал расширение для UITableView, которое позволяет вам получить indexPath для любого представления, которое содержится в ячейке представления таблицы. Он возвращает Optional, который будет равен нулю, если переданное представление фактически не попадает в ячейку представления таблицы. Ниже находится файл источника расширения в полном объеме. Вы можете просто поместить этот файл в свой проект, а затем использовать метод indexPathForView(_:), чтобы найти indexPath, который содержит любое представление.

//
//  UITableView+indexPathForView.swift
//  TableViewExtension
//
//  Created by Duncan Champney on 12/23/16.
//  Copyright © 2016-2017 Duncan Champney.
//  May be used freely in for any purpose as long as this 
//  copyright notice is included.

import UIKit

public extension UITableView {

  /**
  This method returns the indexPath of the cell that contains the specified view

   - Parameter view: The view to find.

   - Returns: The indexPath of the cell containing the view, or nil if it can't be found

  */

    func indexPathForView(_ view: UIView) -> IndexPath? {
        let center = view.center
        let viewCenter = self.convert(center, from: view.superview)
        let indexPath = self.indexPathForRow(at: viewCenter)
        return indexPath
    }
}

Чтобы использовать его, вы можете просто вызвать метод в IBAction для кнопки, которая содержится в ячейке:

func buttonTapped(_ button: UIButton) {
  if let indexPath = self.tableView.indexPathForView(button) {
    print("Button tapped at indexPath \(indexPath)")
  }
  else {
    print("Button indexPath not found")
  }
}

(Обратите внимание, что функция indexPathForView(_:) будет работать, только если объект представления, который он передал, содержится в ячейке, которая в настоящее время находится на экране. Это разумно, так как представление, которое не является на экране, фактически не относится к определенному indexPath, оно, вероятно, будет назначено другому indexPath, когда он содержит ячейку, перерабатывается.)

EDIT:

Вы можете загрузить рабочий демонстрационный проект, который использует указанное выше расширение из Github: TableViewExtension.git

22
задан svick 18 January 2010 в 16:54
поделиться

3 ответа

Я не уверен, что ваш вопрос о Common Lisp или об алгоритме.

Существуют аналогичные проблемы (и решения) для других языков, например, Python . Python часто можно перевести в Common Lisp виртуально line-for-line, поэтому выберите один и портируйте его?: -)

-121--3080546-

@ Graviton, связанная задача с ответом находится здесь . Пользователь использовал BackgroundWorker для обновления текстового поля, применяется та же концепция (ваш только один рабочий поток).

-121--4817880-

Я не думаю, что в .NET есть что-то встроенное, чтобы идентифицировать это... Но существует база данных символов Юникода .

4
ответ дан 29 November 2019 в 03:57
поделиться

Это не встроенная функция в .NET. Вы можете узнать из Charmapap.exe, он отображает имя CodePoint в строке состояния. Если вам нужно, что в вашей собственной программе вы можете компилировать базу данных символов Unicode в ваше приложение. Остерегайтесь авторских прав.

6
ответ дан 29 November 2019 в 03:57
поделиться

, как сказал NOBUGZ и Michaelbray .NET .NET не предоставляют никакой встроенной функции, чтобы получить Unicode Имя персонажей.

И вы должны использовать из базы данных символов Unicode, которые предоставляют Bunicode.o по http://unicode.org/ucd Сегодня это содержит полную информацию всех Unicode 5.2 Информация о картерах (Приложение № 44)

Другая альтернатива состоит в том, чтобы использовать на карте Windows Charchate Wicth, вы можете получить к нему доступ через start \ App Programs \ аксессуары \ System Tools \ MAP CHARTERAP (WIN + R => CHARMAP)

, а также вы можете использовать из конвертеров Unicode Это инструмент с открытым исходным кодом в http://unicode.codeplex.com также предоставляет пользовательский интерфейс для получения информации, а также его использование из Unicode UCD (Приложение № 44) Keynote этого программного обеспечения для вас STYOUCANADD THE ENTERPRISEAPUNIT DLL этого приложения к вашему астейтуре и использованию из предоставленного API.

Эта сборка содержит статический метод, который дает чар и имя возврата, Hexcode, десятичный код и т. Д.

0
ответ дан 29 November 2019 в 03:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: