2011-01-27 3 views
34

Когда я хочу, чтобы получить доступ к родителю UIView текущего UIView Я объявляю объект родительского UIView в текущем UIView и доступ к нему, назначив родительский объект UIView для свойства объекта текущего вида.Доступ родительского вид текущего вида - iphone SDK

Есть ли способ избавиться от этого и напрямую вызвать методы или свойства родительского представления?

Я также пробовал (parentView *) self.view.superview, но не помог.

Это дает ошибку при вызове функции для этого объекта, как

[UIVIew unrecognized selector...... 

Большое спасибо,
Nav

ответ

67

Если вы вызываете это непосредственно из UIView (а не UIViewController), он должен be self.superview вместо self.view.superview.

+0

это UIViewController. Но я думаю, что это не должно работать для UIView, потому что объекты одинаковы, оба - UIView –

+2

Обратите внимание, что это возвращает нуль в ViewDidLoad. Только в и после viewDidAppear это можно использовать. –

0

@ Naveed: Это общий код, который можно использовать для любого вида, будь то родительский или дочерний, просто нажмите кнопку с названием кнопки, которое вы хотите нажать, и имя представления, на которое вы хотите пойти. Например, на заднем нажатие кнопки и хочет, чтобы перейти на библиотеки зрения затем написать этот код -

-(IBAction)backButtonPressed:(id) sender 
{ 
     llibraryView *libraryview=[[libraryView alloc] initWithNibName:nil bundle:nil]; 
    libraryview.modalTransitionStyle=UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:libraryview animated:YES]; 
    [libraryview release]; 
} 

Позволь мне знать, решена ли проблема ур или нет.

+0

Большое спасибо за помощь Арчана. На самом деле моя проблема в том, что я не хочу просматривать имя. Я хотел сделать его динамичным. Благодарю. –

0

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

Теперь у вас есть два варианта: вы устанавливаете свой контроллер просмотра делегатом вашего представления, а затем вызываете метод viewcontroller методом [delegate performSelector:].

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

Но, все-таки есть выход, здесь вы идете: -

Get to UIViewController from UIView?

Надежда, это поможет вам.

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