Выдвинуть другой вид в UINavigationController? - PullRequest
4 голосов
/ 19 июля 2011

Как выдвинуть вид с помощью кнопки в контроллере навигации?Я попытался следовать этому примеру: http://www.cimgf.com/2009/06/25/uitabbarcontroller-with-uinavigationcontroller-using-interface-builder/

Это именно то, что мне нужно, у меня есть UITabBarController с 4 вкладками, и одна из них - UINavigationController.Я хочу выдвинуть это представление, содержащее контроллер навигации, из первого представления, которое является простым UIView.Это не работает, я пробовал также с программно созданной кнопкой, и ничего не происходит.Любые указатели?

Вот код, который у меня есть

@interface HomeViewController : UIViewController {

}

-(IBAction)pushViewController:(id)sender;

@end

---

#import "HomeViewController.h"
#import "NewViewController.h"

@implementation HomeViewController

-(IBAction)pushViewController:(id)sender {
        NewViewController *controller = [[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];
    [[self navigationController] pushViewController:controller animated:YES];
    [controller release], controller = nil;
}

Вот также скриншот с подключениями http://imageshack.us/photo/my-images/847/screenshot20110719at620.png/

Я попробовал то, что вы, ребята, предложили, и до сих порничего, кнопки (независимо от того, созданы они в Interface Builder или программно) действуют так, как будто они не связаны ни с каким методом.

Ответы [ 3 ]

7 голосов
/ 19 июля 2011

Поместите это туда, где вы хотите создать кнопку: (например, Root VC's -viewDidLoad)

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(100.0, 100.0, 100.0, 40.0);
[button setTitle:@"Press" forState:UIControlStateNormal];
[viewController.view addSubview:button];

[button addTarget:self action:@selector(didPressButton:) forControlEvents:UIControlEventTouchUpInside];

И реализовать этот метод:

- (void)didPressButton:(UIButton *)sender
{
    UIViewController *viewController = [[[UIViewController alloc] init] autorelease];
    [self.navigationController pushViewController:viewController animated:YES];
}
3 голосов
/ 14 ноября 2013

Если вы используете раскадровку, создайте переход вручную

На раскадровке:

  • нажмите на представление
  • , затем в верхнем меню правой боковой панели выберитеПоказать инспектор соединений "
  • в" Triggered Segues ", нажмите и перетащите« ручной »триггер на представление, которое вы хотите нажать
  • выбрал« push »во всплывающем меню

это создаст переход, теперь выберите переход и дайте ему идентификатор

Теперь вы можете использовать код:

-(IBAction)doneAction:(id)sender
{
    [self performSegueWithIdentifier:@"identifier" sender:self ];
}

теперь вы можете подключитьдействие на вашу кнопку

1 голос
/ 19 июля 2011

Чтобы выдвинуть представление на контроллер навигации, просто выполните:

YourController *childController = [[YourController alloc] initWithNibName:@"YourControllerView" bundle:NSBundle.mainBundle];
[self.navigationController pushViewController:childController animated:YES];
[childController release];

Теперь, если вы хотите, чтобы это происходило при нажатии кнопки, добавьте кнопку в файл пера и подключите ее к IBActionметод в событии Touch Up Inside.

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