Как показать UINavigationController в представлении - PullRequest
0 голосов
/ 30 мая 2011
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Override point for customization after application launch.

    // Add the view controller's view to the window and display.

    [window addSubview:viewController.view];
    MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@"MainPage" bundle:nil];
    UINavigationController *nav_obj = [[UINavigationController alloc] initWithRootViewController:overviewViewController ];

    [self.viewController presentModalViewController:nav_obj  animated:YES];
    [overviewViewController release];
    [self.window makeKeyAndVisible];

    return YES;
}

Этот код показывает синюю полосу контроллера навигации, но на ней нет кнопок. Похоже, что UINavigationController выделен как пустой.Кто знает в чем проблемы?

UPD: Архив http://www.mediafire.com/?lbjjvl6fcue2q18 Пожалуйста, помогите мне, я новичок в объективе-c

Ответы [ 3 ]

2 голосов
/ 30 мая 2011

Для этого нужно создать кнопку, например:

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:launcherView action:@selector(endEditing)];
self.navigationItem.leftBarButtonItem = doneButton;
[doneButton release];
1 голос
/ 30 мая 2011

Правильный способ использования UINavigationController заключается в push просмотре контроллеров на нем. Таким образом, они будут сложены, и на панели навигации появится кнопка «Назад», когда это имеет место (то есть, когда вы действительно можете вернуться к предыдущему контроллеру). Вы управляете меткой, которая появляется в кнопке «назад», определяя title контроллеров, которые вы нажимаете.

Техника, показанная в другом ответе (с явной настройкой кнопки), полезна для определения правой кнопки, если она вам когда-либо понадобится.

Вы можете попробовать с этим кодом:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@"MainPage" bundle:nil];
    UINavigationController* navigation = [[UINavigationController alloc] init];
    [navigation pushViewController:overviewViewController animated:NO];
    [overviewViewController release];

    [window addSubview:[navigation view]];
    [self.window makeKeyAndVisible];

    return YES;
}

Вместо того, чтобы делать:

    UINavigationController* navigation = [[UINavigationController alloc] init];
    [navigation pushViewController:overviewViewController animated:NO];

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

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

РЕДАКТИРОВАТЬ: Я посмотрел на ваш проект. Краткое описание того, что вы должны попробовать и сделать:

  1. объектов, которые вам нужны в вашей NIB: владелец файла (UIApplication), первый ответчик, делегат приложения FBFun (iVkAppDelegate), окно (UIWindow); убрать остальное;

  2. Выход делегата владельца файла - FBFun App Delegate;

  3. FBFun App Делегат окно выхода является Window.

При такой простой настройке (более или менее той, что у вас есть) используйте этот код:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

     UINavigationController* navigation = [[UINavigationController alloc] init];

     //--    MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@"MainPage" bundle:nil];
     iVkViewController *overviewViewController = [[iVkViewController alloc] init];
 overviewViewController.title = @"First";
     [navigation pushViewController:overviewViewController animated:NO];

     iVkViewController *overviewViewController2 = [[iVkViewController alloc] init];
 overviewViewController2.title = @"Second";
     [navigation pushViewController:overviewViewController2 animated:NO];

    [overviewViewController release];
    [window addSubview:[navigation view]];
    [self.window makeKeyAndVisible];

    return YES;
}

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

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

Я удалил использование MainPageDialog, потому что у пера MainPage много проблем.

Но я надеюсь, что этого скелета достаточно, чтобы вы продолжили свое развитие.

0 голосов
/ 30 мая 2011

Вы пропустили строку, так как не добавляете представление в окно. Добавьте эту строку в свой код

[window addSubview:nav_obj.view];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...