Выдвижение UIViewController из UIView - PullRequest
1 голос
/ 01 апреля 2012

Мне нужно нажать UIView на мой UINavigation controller. Я делаю это по

[self.view addSubview:showContactFlow];

И по нажатию кнопки в UIView мне нужно нажать еще один UIViewController поверх UIView. С UIView У меня нет доступа к self.navigationcontroller Как я могу это сделать?

Edit:

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

Ответы [ 4 ]

1 голос
/ 01 апреля 2012

Добавьте 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 голосов
/ 02 апреля 2012

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

В отношении проблемы modalViewControllers правильный метод -

    [self presentModalViewController:viewController animated:YES];

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

0 голосов
/ 01 апреля 2012

При нажатии кнопки, вы можете представить контроллер вида, как,

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

           [self presentViewController:third animated:NO];


    }

Используя базовую анимацию, вы можете сделать pushviewController из NavigationController похожим на анимацию при написании кода в viewVillAppear: метод ThirdVC.

0 голосов
/ 01 апреля 2012

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

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

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

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

[self.delegate addSubview:self];

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

...