loadView() не вызывается

У меня есть UIViewController, вызывающий другой контроллер представления с определенным методом loadView. Я пробовал много вариантов без успеха, чтобы решить проблему не вызываемого метода loadView.

Любая помощь приветствуется.

Спасибо. Маркос

Вызывающий UIViewController

#import "MyAlbumViewController.h"
@interface ViewController : UIViewController
@end

выполнение

#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


}

- (void)viewDidAppear:(BOOL)animated{

    UIViewController*albumVC = [[MyAlbumViewController alloc] init];

    [self.navigationController pushViewController:albumVC animated:YES];


}
@end

Вызывается UIViewController

@interface MyAlbumViewController : NIToolbarPhotoViewController <NIPhotoAlbumScrollViewDataSource>

@end

Выполнение

#import "MyAlbumViewController.h"

@implementation MyAlbumViewController

- (void)loadView{

    [super loadView];

    self.photoAlbumView.dataSource = self;

    // Set the default loading image.
    self.photoAlbumView.loadingImage = [UIImage imageWithContentsOfFile:
                                        NIPathForBundleResource(nil, @"NimbusPhotos.bundle/gfx/default.png")];

    self.title = NSLocalizedString(@"Loading...", @"Navigation bar title - Loading a photo album");

    [self loadAlbumInformation];
}...

person vilelam    schedule 29.01.2013    source источник
comment
Почему вы используете loadView вместо viewDidLoad?   -  person rdelmar    schedule 29.01.2013
comment
это программный вид из платформы Nimbus iOS.   -  person vilelam    schedule 29.01.2013
comment
См. раздел stackoverflow.com/questions/7788928/. для обсуждения loadView   -  person Gereon    schedule 29.01.2013
comment
Да, если вы используете программный вид, использование loadView очень хорошо. Я думаю, это может быть ваш self.navigationController = nil   -  person Guo Luchuan    schedule 30.01.2013


Ответы (2)


Идея loadView состоит в том, чтобы полностью переопределить метод, а не вызывать super

То, что вы делаете, - это именно то, для чего предназначен метод viewDidLoad, не имеет значения, загрузили ли вы его из файла пера или что-то еще

И я цитирую ваш собственный пост, в вашем ViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


}
person Ismael    schedule 29.01.2013
comment
Если мой вызываемый UIViewController имеет программно определенное представление, должен ли я загружать представление из loadView или я ошибаюсь? - person vilelam; 29.01.2013
comment
Нет необходимости использовать loadView. Вы даже можете создавать что-то в своем viewDidLoad, например, добавлять таблицу или какие-то кнопки или что-то еще, потому что этот метод вызывается сразу после loadView и только тогда, когда он только что создан, я делаю это все время :) - person Ismael; 29.01.2013
comment
Я только что добавил NSLog внутрь viewDidLoad, и результат не отобразился. Также не был вызван viewDidLoad. Кажется, я делаю что-то не так с [self.navigationController pushViewController: анимационным альбомом VC: YES]; - person vilelam; 29.01.2013
comment
Я изменился с [self.navigationController pushViewController: анимация альбома VC: YES]; to [self presentViewController: анимация альбома VC: ДА, завершение: ноль]; - person vilelam; 29.01.2013
comment
и теперь он вызывает loadView(), а также viewDidLoad(). - person vilelam; 29.01.2013

Я нажимал контроллер представления с помощью:

 [self.navigationController pushViewController:albumVC animated:YES];

Я просто изменился на:

[self presentViewController:albumVC animated:YES completion:nil];

Контроллер навигации UIViewController

navigationController Ближайший предок в иерархии контроллера представления, который является контроллером навигации. (только для чтения)

@property(nonatomic, readonly, keep) UINavigationController *navigationController Обсуждение Если получатель или один из его предков является дочерним элементом навигационного контроллера, это свойство содержит владеющий навигационным контроллером. Это свойство равно нулю, если контроллер представления не встроен в контроллер навигации.

person vilelam    schedule 29.01.2013