1

Мне нужно нажать UIView на мой UINavigation controller. Я делаю это с помощьюНажатие UIViewController из UIView

[self.view addSubview:showContactFlow]; 

А на нажатие кнопки в UIView мне нужно нажать другую UIViewController над UIView. От UIView Я не могу получить доступ self.navigationcontroller Как это сделать?

Edit:

Я поставил UIView как вид нового UIViewController Я толкаю в, ранее упомянутых UIViewController. Теперь я хотел бы знать, как обрабатывать событие кнопки UIView внутри своего UIViewController, в котором его вид установлен.

+1

Это не правильно способ сделать это, и вид контроллеров различного рода объектов. У контроллеров View есть свои иерархии, которых нет в uiviews.Вы не можете на самом деле нажать контроллер навигации с обычного контроллера представления (ну, в ios5 вы можете это сделать, но не логически корректны). Вам нужно создать uinavigationcontroller с внутренним контроллером представления, который вы хотите отобразить, а затем отобразить его в текстовом формате. Если вы просто хотите имитировать поведение push-анимации, вы можете просто сделать это с помощью анимации ядра или анимации только uiview. – Andrea

+0

Хорошо. Я понял. Я просто хочу знать, как я могу обработать событие кнопки UIView's из его родительского 'UIViewController'. –

+0

Хави вы могли бы попытаться объяснить вопрос лучше, потому что я не понимаю, как вы настроили приложение. Потому что для меня push означает действие '[self.navigationController pushViewController: vc animated: YES]'. Я не получаю это, извините – Andrea

ответ

1

Добавить UINavigationController ivar в UIView и назначить его контроллеру основного вида. Тогда вы должны иметь доступ к нему из UIView.

Edit:

Ваш UIView подкласс:

// CustomView.h 
@interface CustomView: UIView { 
    // ... 
    // your variables 
    // ... 
    UINavigationController *navController; 
} 

@property (nonatomic, assign) UINavigationController *navController; // assign, because this class is not the owner of the controller 

// custom methods 

@end 

// CustomView.m 
@implementation Customview 

// synthesize other properties 
@synthesize navController; 

// implementation of custom methods 

// don't release the navigation controller in the dealloc method, your class doesn't own it 

@end 

Затем перед [self.view addSubview:showContactFlow]; линия просто добавить [showContactFlow setNavController:[self navigationController]];, а затем вы должны быть в состоянии получить доступ к навигации контроллера иерархии от вашего UIView и использовать его, чтобы подтолкнуть другие UIViewController s.

+0

Не могли бы вы объяснить немного больше? –

+0

Добавьте член 'UINavigationController' в свой класс' UIView' и назначьте его контроллеру навигации контроллера вида перед добавлением представления в качестве подзадачи. Тогда у вас будет доступ к нему. – Alexander

+0

Я не уверен, как это сделать. Не могли бы вы показать это. –

0

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

В противном случае, и для этого случая вы можете решить его быстро, используя делегирование. Итак:

showContactFlow.delegate = self; 
[self.view addSubview:showContactFlow]; 

Так позже в UIView, вы можете просто сказать:

[self.delegate addSubview:self]; 

Это сработает, но это, вероятно, лучший подход следует использовать не.

0

На кнопку мыши, вы можете представить контроллер представления, как,

-(void)buttonFunction{ 
      ThirdVC *third= [[ThirdVC alloc]initWithNibNme];...... 

      [self presentViewController:third animated:NO]; 


    } 

Используя Core Animation вы можете сделать pushviewController NavigationController как анимация на написание кода в viewWillAppear ThirdVC в: метод.

+0

self не находит метод под названием 'presentViewController' –

0

, где вы добавляете UIButton, это в режиме showContactFlow или в представлении ViewController?

В связи с modalViewControllers выдавать правильный метод является

[self presentModalViewController:viewController animated:YES]; 

стандартная анимация в вверх

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