presentModalViewController не отображается в «простом» приложении - PullRequest
1 голос
/ 08 января 2010

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

Я добавляю ViewController в MainWindow в приложении DidFinishLaunching. В этом ViewControllers XIB у меня есть кнопка. ViewController имеет следующий заголовок:

#import <UIKit/UIKit.h>
#import "ModalView.h"

@interface ViewBasedViewController : UIViewController {
    ModalView *modalView;
}

- (IBAction)dooooIt :(id)sender;

@property (nonatomic, retain, readonly) ModalView *modalView;

@end

И методы:

#import "ViewBasedViewController.h"

@implementation ViewBasedViewController

@synthesize modalView;

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];

}

- (void)viewDidUnload {
}


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

- (ModalView *)modalView {
    if (modalView == nil) {
        modalView = [[ModalView alloc] initWithNibName:@"ModalView" bundle:nil];
    }
    return modalView;
}

- (IBAction)dooooIt :(id)sender {

    [self.navigationController presentModalViewController:modalView animated:YES];

}

@end

Я, очевидно, упускаю что-то очень простое, и я считаю, что на данном этапе это между моими ушами :)

Кто-нибудь хочет избавить беднягу от страданий?

Большое спасибо

Chris

Ответы [ 2 ]

0 голосов
/ 10 января 2010

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

- (IBAction)dooooIt :(id)sender {
    [self presentModalViewController:self.modalView animated:YES];

}

Я должен был включить 'self' при обращении к свойству modalView (иначе это ноль), и я не должен был ссылаться на navigationController, так как я не подключил ни одного.

Надеюсь, это поможет любому из вас (удивительно, что может сделать бокал вина!:)

0 голосов
/ 08 января 2010

Вы подключили кнопку к IBAction? Удерживая клавишу Control в Interface Builder, нажмите на кнопку «Владелец файла» в файле XIB и выберите там метод «dooooIt». Перекомпилируйте, и ваш код должен выполняться как положено.

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