iPhone не отображается - PullRequest
0 голосов
/ 17 июля 2009

У меня возникают трудности с отображением очень простого представления. Это представление имеет собственный контроллер представления, который управляется переключающим контроллером представления. XIB имеет один компонент UIViewController с установленным свойством Image. Контроллер вида выглядит следующим образом:

InstructionsViewController.h

#import <UIKit/UIKit.h>

@interface InstructionsViewController : UIViewController {

}

@end

InstructionsViewController.m

#import "InstructionsViewController.h"

@implementation InstructionsViewController



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
    // Release anything that's not essential, such as cached data
}

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


@end

Я также установил свойство класса для Владельца файла XIB равным InstructionsViewController, а Ctrl + Перетащил Владельца файла на значок «Вид» и выбрал «Вид» во всплывающем меню.

Код для отображения вида:

- (void) showInstructions
{
    //Lazy load the instruction view.
    if (self.instructionsViewController == nil)
    {
        InstructionsViewController *viewController = [[InstructionsViewController alloc]
                                                initWithNibName:@"InstructionsView" 
                                                bundle:nil];
        self.instructionsViewController = viewController;
        [viewController release];
    }

    [self.view insertSubview:viewController.view atIndex:0];
}

Мой контроллер вида, который анимирует разные виды при их переключении, без проблем загружает и отображает три других вида. Это просто не нравится.

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

Спасибо

Steve

Ответы [ 4 ]

1 голос
/ 11 ноября 2012

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

0 голосов
/ 18 июля 2009

Вы убедились, что showInstructions вызывается, установив там точку останова? Еще одна вещь, которую нужно проверить, это то, что вы вставляете представление Instructions внизу вашего z-порядка, чтобы оно было позади всех других элементов. Попробуйте использовать:

[self.view addSubview:self.instructionsViewController.view];

Это добавит его к вершине z-порядка. Если это не сработает, попробуйте:

[self.view setNeedsLayout];

и / или:

[self.instructionsViewController.view setNeedsLayout];
0 голосов
/ 19 июля 2009

Хорошо, я наконец-то решил это!

Проблема заключалась в том, что что-то в XCode или Интерфейсном Разработчике не согласовывалось с файлом PNG, который я указал для элемента управления Image View в IB. Я попытался переименовать, переопределить и т. Д. Безрезультатно.

Мне наконец-то пришлось удалить рисунок и заново скопировать его из исходного местоположения. Затем я переопределил его в Image View, собрал и запустил. Теперь это работает.

В мире снова все хорошо.

Спасибо тем, кто нашел время, чтобы прочитать и предложить помощь. Я очень ценю это!

Steve

0 голосов
/ 17 июля 2009

Даже не совсем уверен, как это компилируется. Вы вставляете подпредставление вне вашей проверки nil, когда viewController находится вне области действия.

Вы, вероятно, хотите сделать

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

...