@ Ответ 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, когда он содержит ячейку, перерабатывается.)
Вы можете загрузить рабочий демонстрационный проект, который использует указанное выше расширение из Github: TableViewExtension.git
Я не уверен, что ваш вопрос о Common Lisp или об алгоритме.
Существуют аналогичные проблемы (и решения) для других языков, например, Python . Python часто можно перевести в Common Lisp виртуально line-for-line, поэтому выберите один и портируйте его?: -)
-121--3080546-@ Graviton, связанная задача с ответом находится здесь . Пользователь использовал BackgroundWorker для обновления текстового поля, применяется та же концепция (ваш только один рабочий поток).
-121--4817880-Я не думаю, что в .NET есть что-то встроенное, чтобы идентифицировать это... Но существует база данных символов Юникода .
Это не встроенная функция в .NET. Вы можете узнать из Charmapap.exe, он отображает имя CodePoint в строке состояния. Если вам нужно, что в вашей собственной программе вы можете компилировать базу данных символов Unicode в ваше приложение. Остерегайтесь авторских прав.
, как сказал 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, десятичный код и т. Д.