2015-09-14 4 views
0

В моей материнской ViewController, у меня есть вид контейнера, я добавил подвид к нему:Access содержал UIView компонент из Родитель ViewController

m_cardDetail = [[CardDetailView alloc] init]; 
    [_m_viewContainer addSubview:m_cardDetail]; 
    [m_cardDetail initialize]; 

Но как я могу позволить мой процесс родитель ViewController кнопка мыши (кнопка ПРЕБЫВАЕТ в представлении m_cardDetail). Я попытался установить свойство кнопки тег кнопки 1010 и с помощью этого кода в родительском ViewController:

UIButton *aButtonView = (UIButton *)[m_cardDetail viewWithTag:1010]; 
    [aButtonView addTarget:self action:@selector(aButtonTapped:) forControlEvent:UIControlEventTouchUpInside]; 

, а также добавил это в ViewController:

- (void) aButtonTapped:(UIButton *) sender { 
     //Do something 
    } 

, но им получать Непризнанную ошибку выбора

ответ

1

Вы должны рассматривать другие представления контроллера вида как частные, даже такие, которые являются контроллером детского вида. Как предлагает @Ostanik в своем ответе (проголосовали), настройка протокола, а делегат - хороший способ установить связь между родителем и ребенком.

Обратите внимание, что встроенный segue - это очень чистый способ настройки родительской/дочерней ссылки. Вы просто создаете представление контейнера в IB и управляете перетаскиванием из представления контейнера в сцену контроллера вида, который вы хотите быть дочерним, а Xcode делает все остальное. Когда загружается родительский контроллер представления, вызывается метод embed segue, и вы можете настроить делегат в методе prepareForSegue.

Смежные вопросы