Создать пользовательский класс UIButton - PullRequest
3 голосов
/ 12 сентября 2011

Мне было интересно, как сделать следующее:

  1. Создать много кнопок.
  2. Разрешить каждой кнопке идентифицироваться по пользовательской строке.

Я читал, что, возможно, подкласс UIView может сработать, но подкласс UIButton будет совершенно невозможен.Также, если бы я создал подкласс UIView и затем заполнил фрейм кнопкой, добавление, скажем, 50 из них на экран, вызвало бы какие-либо проблемы с производительностью, очевидно, графика имела бы какое-то отношение к этому.Но может ли быть более простой способ?

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

Спасибо!

Ответы [ 2 ]

4 голосов
/ 12 сентября 2011

Лучший способ сделать это - использовать свойство tag, равное UIView.(UIButton - это подкласс UIView.) tag - это просто целое число, поэтому он очень подходит для циклов и подобных вещей.Излишне говорить, что он работает и с подклассами.

Этот метод также показан во многих примерах Apple.Это удобно, потому что вам не нужно хранить какие-либо другие переменные.Кроме того, существуют очень практичные способы доступа к кнопкам через viewWithTag:

UIButton *button = (UIButton *)[theSuperView viewWithTag:i];

Я, например, реализовал клавиатуру фортепиано таким образом.Написать алгоритм, который идентифицирует каждый ключ (или шаг) с тегом, довольно просто.

3 голосов
/ 12 сентября 2011

Если вы действительно хотите подкласс UIButton, то вы можете это сделать.Однако вы можете столкнуться с проблемами, если будете делать вызовы +buttonWithType, который создает экземпляры подклассов вместо UIButton напрямую.

Если все, что вам нужно, это добавить пользовательский NSString или другой объект, связанный с каждой кнопкой, тогда вы можете использовать Ассоциативные ссылки , чтобы сделать это.

Вы можете создать много кнопок одновременно, используя цикл for, возможно, с помощью NSArray, чтобы удерживать кнопки, если вы не хотите сразу добавлять их в подпредставление.

Другой подход -создать NSDictionary, где объекты - UIButton с, а ключи - NSString с, по которым вы хотите идентифицировать каждую кнопку.

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