iOS – передача имени отправителя (кнопки) в addSubview

У меня есть основной вид с тремя кнопками. Нажатие на любую из кнопок добавляет SubView.

Кнопки имеют разные названия и все связаны с IBAction "switchView"

Ниже приведен код «switchView».

- (IBAction)switchView:(id)sender{ secondView *myViewController = [[secondView alloc] initWithNibName:@"secondView" bundle:nil]; [self.view addSubview:myViewController.view]; } 

«SecondView» загружается правильно, и все работает хорошо.

Проблема в том, что я хочу знать, какая кнопка была отправителем.

Я не хочу создавать 3 подзаголовка, по одному для каждой кнопки. Код и XIB будут абсолютно одинаковыми>

Единственная разница была бы переменной, которую я хотел бы настроить во втором представлении (метод viewDidLoad) в зависимости от того, кто является отправителем (нажата кнопка)

Это возможно? Или мне нужно создать 3 подвид – один для каждой кнопки?

Ваша помощь очень ценится!

Вы можете идентифицировать разные кнопки с тегом. например, с помощью вашего метода:

 -(IBAction)switchView:(id)sender { UIButton *button = (UIButton*)sender; if (button.tag == 1) { //TODO: Code here... } else if (button.tag == 2) { //TODO: Code here... } else { //TODO: Code here... } } 

Свойство тега можно установить через InterfaceBuilder. Надеюсь это поможет.

Я думаю, вы можете решить двумя способами:

  1. Создайте свойство типа: @property (nonatomic, strong) IBOutlet UIButton *button1, *button2, *button3; в вашем диспетчере просмотра и привяжите кнопки к ним в качестве ссылки на розетку на XIB.
  2. Дайте тег для каждой кнопки на вашем xib и попросите тег отправителя с отправителем UIButton *b=(UIButton*)sender; b.tag; UIButton *b=(UIButton*)sender; b.tag; как и Маркус.

Решение моей проблемы сводилось к передаче данных между mainView и subView.

В моем mainView.h я объявил NSString и ее @property

 NSString *btnPressed; } @property(nonatomic, retain) NSString *btnPressed; 

то в моем mainView.m внутри метода switchView я сделал это:

 - (IBAction)switchView:(id)sender{ secondView *myViewController = [[secondView alloc] initWithNibName:@"secondView" bundle:nil]; btnPressed = [NSString stringWithFormat:@"%i", [sender tag]]; [myViewController setBtnPressed:self.btnPressed]; [self.view addSubview:myViewController.view]; } 

Эта строка в приведенном выше коде фактически заботится о передаче данных во вновь созданный subView:

 [myViewController setBtnPressed:self.btnPressed]; 

Затем в моем secondView.h я объявляю точно тот же NSString * btnPressed и его @property (хотя это совершенно другой объект, чем тот, который объявлен в основном)

Затем в моем secondView.m я получаю значение нажатой кнопки, которую меня интересует.

 - (void)viewDidLoad { [super viewDidLoad]; int theValueOfTheButtonPressed = [self.btnPressed intValue]; } 

Это хорошо работает.

Не забывайте @synthesize btnPressed; а также [btnPressed release]; как в mainView.m, так и в secondView.m

  • Обработчик завершения не работает в viewDidLoad?
  • В чем разница между жизненным циклом контроллера и жизненным циклом просмотра в iOS?
  • Переход через segue на определенный ViewController в зависимости от того, зарегистрирован или зарегистрирован пользователь или нет. IOS
  • Как настроить атрибуты titletext для панели UINavigation только для одного контроллера?
  • Перезагрузите и не перезагрузите, если нажмите обратно с разных контроллеров. стриж
  • iOS: Как узнать, вызван ли viewDidLoad?
  • Исправлена ​​инициализация элемента itemDidLoad
  • UIView - Как получать уведомления при загрузке представления?
  • Выполнение вызова на сервер в viewDidLoad
  • Как установить серый цвет фона для UIActivityIndicator при загрузке UIView в iOS
  • UITableView занимает намного больше времени, когда numberOfRows возвращает большое количество
  • Interesting Posts

    Spritekit – не загрузка @ 3x изображений из SKTextureAtlas

    Как мне обрабатывать событие, когда пользователь нажимает вне UIView?

    Настройки знака кода встроенной двоичной цели соответствуют родительскому приложению.

    Вопросы аналитики и законности

    Как остановить или отменить выполнение блока отправки

    Firebase не используется в расширениях приложений iOS начиная с версии 3.8.0 из-за GTMSessionFetcher sharedApplication #AskFirebase

    После Auto-ARC Conversion: присвоение сохраненного объекта небезопасному свойству; объект будет выпущен после присвоения

    CoreAnimation: перенос анимационных объектов в следующий UIViewController

    XCode: как проверить мое приложение на более ранних версиях iOS

    Является ли iOS CarPlay API общедоступным? Как интегрировать CarPlay?

    Как оправдать текст ярлыка?

    Внедрение старой библиотеки Mecab в современное приложение для iOS

    Получить локальный путь файла PHASset

    Изучает ли ключевое значение работу с текстовым свойством UITextView?

    Instagram-подобная панель навигации (iOS 7)

    Давайте будем гением компьютера.