Как добавить NavigationViewController в проект, созданный с использованием шаблона ViewController - PullRequest
0 голосов
/ 10 октября 2010

Я создал новое приложение, используя шаблон приложения View Based в xCode.

Мой первый вид, который отображается при загрузке приложения, представляет собой меню на основе кнопок. Одна из кнопок (Make) должна загрузить новый стек навигации с помощью NavigationViewController. Существуют и другие кнопки, которые при реализации будут выполнять другие действия за пределами области действия NavigationViewController.

Я хотел бы иметь возможность нажать кнопку «Создать», открыть и отобразить новый контроллер навигации.

Из ViewController.m:

-(IBAction)makeStory:(id)sender{
NSLog(@"makeStory:");
navController = [[UINavigationController alloc] init];
makeStoryTableViewController = [[MakeStoryTableViewController alloc] initWithNibName:@"MakeStoryTableViewController" bundle:nil];

[navController pushViewController:makeStoryTableViewController animated:YES];

}

Я создал NavigationViewController в открывающемся файле ViewController.h:

#import <UIKit/UIKit.h>
#import "MakeStoryTableViewController.h" 
@interface StoryBotViewController : UIViewController {
UINavigationController *navController;
MakeStoryTableViewController *makeStoryTableViewController;

}
- (IBAction)makeStory:(id)sender;
@end

Я знаю, что чего-то не хватает, потому что когда я вызываю pushViewController, ничего не происходит - я думаю, что каким-то образом мне нужно присоединить NavigationViewController к ViewController, в котором находится makeStory:

Для справки, мой заголовок делегата приложения объявляет контроллер представления в @implementation следующим образом:

    UIWindow *window;
    StoryBotViewController *viewController;

с соответствующим @synthesize в .m делегата приложения

@synthesize window;
@synthesize viewController;

Как мне включить NavigationStack с моего контроллера начального вида? Пожалуйста, прости меня, если вопрос немного расплывчатый, я с удовольствием предоставлю больше информации, если вам это нужно. Я впервые спрашиваю о стековом потоке, и я, очевидно, немного новичок с iPhone SDK.

1 Ответ

1 голос
/ 10 октября 2010

у тебя было почти. Но вы забыли добавить NavigationController к вашему представлению.

[self.view addSubview:navController.view];

Добавьте это в свой IBAction.


EDIT:

но, скорее всего, это не то, что вам нужно, потому что вы не можете вернуться к своему самому первому viewController. Если вы хотите вернуться к первому viewController, настройте ваш проект, как в шаблоне на основе навигации. Вы можете это программно:

Переместите все элементы UINavigationController из файла заголовка viewcontroller в заголовок делегата приложения. И измените реализацию делегата приложения на что-то вроде этого:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Override point for customization after application launch.
    navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    // Add the view controller's view to the window and display.
    //    [window addSubview:viewController.view];
    [window addSubview:navController.view];
    [window makeKeyAndVisible];
    return YES;
}

убедитесь, что выпустите navController в dealloc

затем замените свой IBAction чем-то вроде этого:

- (IBAction)makeStory:(id)sender {
    makeStoryTableViewController = [[MakeStoryTableViewController alloc] initWithNibName:@"MakeStoryTableViewController" bundle:nil];
    [self.navigationController pushViewController:makeStoryTableViewController animated:YES];
}

, если вам не нравится отображать панель навигации в вашем первом контроллере вида, скройте ее, но не забудьте показать ее, если вы помещаете другие элементы в стек self.navigationController.navigationBar.hidden = ...

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