Как кодировать кнопку «Назад» на панели навигации с помощью элемента панели кнопок - PullRequest
0 голосов
/ 04 марта 2012

У меня проблемы с кодированием кнопки для перехода на предыдущую страницу. Я смог сделать это, чтобы перейти на следующую страницу, думая, что если я сделаю то же самое, но немного изменил, это сработает наоборот. К сожалению, у меня возникает много ошибок, которые я не могу устранить, потому что это не позволяет мне использовать функцию релиза. Вот этот код, который помогает ему работать, переходя к следующей странице в порядке:

#import "ViewController.h"

@implementation ViewController

-(IBAction)btnClicked:(id) sender
{
    //add the view of the view controller to the current View---
    if (menuView==nil) {
        menuView = 
        [[MenuView alloc] initWithNibName:@"MenuView"
                                   bundle:nil];
    }
    [self.view addSubview:menuView.view];

}
-(void)dealloc {
 [menuView release];
 [super dealloc];
}

Как мне сделать так, чтобы кнопка возврата вернулась на предыдущую страницу?

Ответы [ 2 ]

0 голосов
/ 04 марта 2012

Это довольно просто:Используйте UINavigationController как предложено @ Paul.s.

0 голосов
/ 04 марта 2012

То, как вы это делаете, не совсем правильно, и я бы посоветовал немного почитать, чтобы ознакомиться с программированием на iOS.

Структура вашей программы должна быть такой: создать контроллер навигации (2) для управления стекомконтроллеров представления, дающих ему viewController (1), который будет действовать как его root.

// AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    // 1
    FirstViewController *firstViewController = [[FirstViewController alloc] init];

    // 2
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:firstViewController];
    [firstViewController release]; firstViewController = nil;

    self.window.rootViewController = navigationController;
    [navigationController release]; navigationController = nil;

    [self.window makeKeyAndVisible];
    return YES;
}

Это покажет ваш первый контроллер представления внутри UINavigationController . UINavigationController отвечает за управление стеком UIViewController и предоставление вам пользовательского интерфейса для перехода обратно вниз по стеку, а также за вызов всех соответствующих методов, связанных с представлением, на UIViewController в правильное время, например viewDidLoad.Вы должны проверить Руководство по программированию контроллера View для большого количества информации

Затем внутри вашего первого контроллера View вы делаете что-то вроде этого, чтобы ответить на кнопку:

- (IBAction)buttonClicked:(id)sender;
{
    SecondViewController *secondViewController = [[SecondViewController alloc] init];

    [self.navigationController pushViewController:secondViewController animated:YES];
    [secondViewController release]; secondViewController = nil;
}

Это создает новый контроллер представления и помещает его в стек.

...