Несколько контроллеров в одном представлении - PullRequest
0 голосов
/ 24 февраля 2011

Я в основном пытаюсь добавить два контроллера представления к одному контроллеру.

Я создал приложение на основе представления, названное "MultipleViews".После этого я добавляю два класса контроллеров "RedView.h" и "BlueView.h" со своими собственными XIB-файлами.Я могу добавить представления обоих контроллеров в "MutipleViewsViewController" по методу [self.view addSubview:red.view].Оба представления отображаются правильно.Проблема в том, когда я добавляю кнопку в красный и синий контроллеры.Всякий раз, когда я нажимаю кнопку, он говорит unrecognized selector sent to instance, хотя я правильно связал кнопки с их функциями.Я что-то здесь упускаю?

вот код:

MultipleViewsViewController.h

#import <UIKit/UIKit.h>

@interface MutipleViewsViewController : UIViewController {

}

@end

MutipleViewsViewController.m

-

 (void)viewDidLoad {
    [super viewDidLoad];

    RedView *red = [[RedView alloc]init];

    red.view.frame = CGRectMake(0, 0, 320, 240);

    [self.view addSubview:red.view];

    BlueView *blue = [[BlueView alloc]init];

    blue.view.frame = CGRectMake(0, 240, 320, 240);

    [self.view addSubview:blue.view];



}

RedView.h

#import <UIKit/UIKit.h>


@interface RedView : UIViewController {

}

-(IBAction)buttonPressed;

@end

BlueView.h

#import <UIKit/UIKit.h>


@interface BlueView : UIViewController {

}

-(IBAction)buttonPressed;

@end

Кнопки связаны с методом buttonPressed через IB.Сообщение, которое я получаю, когда нажимаю кнопку в красном окне, выглядит так:

MutipleViews[1865:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RedView buttonPressed]: unrecognized selector sent to instance 0x4e12500'

Извините за то, что не было ясно ранее.



Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

IBActions обычно принимают входной параметр типа id. Таким образом, ваше buttonPressed действие должно выглядеть как

-(IBAction)buttonPressed:(id)sender;

Когда это действие действительно вызывается, передается ссылка на элемент управления, который его вызывает (в данном случае кнопка).

При программном вызове вы можете отправить объект контроллера (self) на него.

0 голосов
/ 24 февраля 2011

Не видя код, сложно сказать точно, в чем проблема.Тем не менее, это, безусловно, проблема, связанная с целевым действием.Когда кнопка нажата, она отправляет своей цели сообщение действия.Независимо от цели, которую вы назначили, ваша кнопка не реагирует на действие, которое вы пытаетесь отправить ей.

Возможно, вы не реализовали действие на желаемой цели?Возможно, вы по ошибке ввели неверное имя цели или действия (или неправильно подключили их в конструкторе интерфейсов)?

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