Я решил эту проблему с массивом объектов: все параметры сохраняются в одном объекте, затем объект вставляется в массив, и, наконец, индекс объекта в массиве передается в свойстве TAG объектакнопка.Эта техника работает для одной или нескольких кнопок.Я сделал это для приложения, у которого был список контактов, где вы могли принимать или отклонять их с помощью кнопок, и эти кнопки вызывали один и тот же метод действия, благодаря TAG стало возможным узнать, какие параметры отправляются в базу данных.Шаги:
1- Создайте новый класс: Новый файл, класс Objective-C, назовите его, подкласс NSOBJECT, сохраните его.
2- В заголовке этого нового класса объявите одинсвойство для каждого параметра.
3- Теперь перейдите к файлу IMPLEMENTATION класса viewcontroller, к которому принадлежит ваша кнопка.
4- Импортируйте новый класс: #import "new_class.h"
5- Объявите массив в разделе INTERFACE:
@interface my_viewcontroller ()
{ NSMutableArray * my_array; }
6- В методе VIEWDIDLOAD создайте массив как пустой:
my_array = [ [ NSMutableArray alloc ] initWithObjects : nil ];
7- Inметод, в котором вы получаете данные для параметров, объявляете объект нового класса, создаете его экземпляр и заполняете свойства:
new_class * nc;
nc = [ [ new_class alloc ] init ];
nc.param1 = @"abc";
nc.param2 = 123;
nc.param3 = true;
8 - Теперь вставьте его в массив:
[ my_array addObject : nc ];
9 - сохранить значение 0 в теге кнопки.Вы будете использовать это значение в качестве индекса для доступа к параметрам в позиции my_array [0].
Если есть еще кнопки, например, из веб-службы, которая возвращает данные JSON, просто выполните цикл по данным, создавая большеэкземпляры нового класса и вставка их в массив.Позже, например, в табличном представлении с динамическими ячейками и ячейке шаблона с кнопками в методе CELLFORROWATINDEXPATH вы сможете сохранить значение INDEXPATH в TAG каждой кнопки, поэтому эти кнопки получат доступ к своим собственным параметрам.