Почему этот простой проект переключения представлений не работает? - PullRequest
1 голос
/ 12 августа 2011

Я учусь писать приложения в Xcode. Я использую книгу, чтобы вести меня. К сожалению, книга написана с руководствами по Xcode 3, и я использую Xcode 4.

Пока что никаких проблем не было, но этот проект не работает, и я просто не понимаю его, потому что, похоже, это имеет смысл.

Цель проекта - использовать контроллер представлений для переключения между тремя представлениями.

Может ли кто-нибудь взглянуть и посмотреть, что я сделал не так?

Вот весь проект: http://www.2shared.com/file/CKO6ACzg/MultipleViews.html

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

1 Ответ

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

MultipleViewsViewController.h должен быть:

#import <UIKit/UIKit.h>

@class FirstViewController;
@class SecondViewController;
@class ThirdViewController;

@interface MultipleViewsViewController : UIViewController {


    IBOutlet FirstViewController *firstViewController;
    IBOutlet SecondViewController *secondViewController;
    IBOutlet ThirdViewController *thirdViewController;

}

//@property (nonatomic, retain) FirstViewController *firstViewController;
//@property (nonatomic, retain) SecondViewController *secondViewController;
//@property (nonatomic, retain) ThirdViewController *thirdViewController;

-(IBAction)loadFirstView:(id)sender;
-(IBAction)loadSecondView:(id)sender;
-(IBAction)loadThirdView:(id)sender;

@end

MultipleViewsViewController.m должно быть:

#import "MultipleViewsViewController.h"

#import "FirstViewController.h"
#import "SecondViewController.h"
#import "ThirdViewController.h"

@implementation MultipleViewsViewController

//@synthesize firstViewController;
//@synthesize secondViewController;
//@synthesize thirdViewController;

-(IBAction)loadFirstView:(id)sender{
    [secondViewController.view removeFromSuperview];
    [thirdViewController.view removeFromSuperview];

    [self.view insertSubview:firstViewController.view atIndex:0];

}

-(IBAction)loadSecondView:(id)sender{
    [firstViewController.view removeFromSuperview];
    [thirdViewController.view removeFromSuperview];
    [self.view insertSubview:secondViewController.view atIndex:0];

}

-(IBAction)loadThirdView:(id)sender{
    [firstViewController.view removeFromSuperview];
    [secondViewController.view removeFromSuperview];
    [self.view insertSubview:thirdViewController.view atIndex:0];

}

-(void)dealloc{

    [firstViewController release];
    [secondViewController release];
    [thirdViewController release];

    [super dealloc];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    firstViewController = [[FirstViewController alloc] init];
    secondViewController = [[SecondViewController alloc] init];
    thirdViewController = [[ThirdViewController alloc] init];
    [self loadFirstView:nil];

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

Соедините свои кнопки (что вы не сделали в своем проекте, что также может быть проблемой), и все готово.

...