IOS: создание собственного взгляда - PullRequest
0 голосов
/ 14 марта 2011

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

Я пытаюсь понять, как работает модель mvc в iOS.

Я хочу смешать доступные представления и мои собственные (которые яхочу рисовать сам, используя примитивы, такие как рисование строк)

Итак

Я создал класс MyView: UIView.Затем я переопределил метод drawRect и добавил туда простой вывод.Затем я добавил свой класс в «отображение ipad» с помощью построителя интерфейса.

И проблема в том, что точка останова в начале метода DrawRect никогда не достигается.И, конечно, я получаю пустой экран в симуляторе = (

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

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

Вот мой код (извините, забыл об этом):

MyView.h:

@interface MyView : UIView {
...
}

MyView.m:

...
- (void)drawRect:(CGRect)rect {

    NSString *text = @"Hello, world";

    UIFont *font = [UIFont systemFontOfSize:10];

    [[UIColor blackColor] set];
    CGPoint point;
    point = CGPointMake(0.5f, 0.5f);
    [text drawAtPoint:point withFont:font];

    [font release];
}

UPD:

Я добавил TabBar только для того, чтобы убедиться, что проблема толькос моим собственным взглядом. Вот и все: появляется TabBar.

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

Поскольку вы не опубликовали свой код, это дикая догадка, но вам нужно перерисовать представление:

[myViewInstance setNeedsDisplay:YES];

Также убедитесь, что представление действительно загружено. Вы можете проверить это с помощью NSLog в методе пробуждения пера (-[<NSNibAwaking> awakeFromNib]).

0 голосов
/ 14 марта 2011

Если drawRect: не вызывается, то либо вы фактически не на экране, либо вы поставили неправильную подпись для drawRect:. Правильная подпись:

- (void)drawRect:(CGRect)rect

Чтобы убедиться, что вы действительно на экране, попробуйте перегрузить awakeFromNib и установить точку останова. Если нет, значит, вы неправильно настроили его в конструкторе интерфейсов. Наиболее распространенными проблемами являются невозможность установить правильный класс для представления (он должен быть установлен на MyView) или помещение его в NIB, который фактически не загружен.

И, конечно, убедитесь, что вы на самом деле подкласс UIView, что у вас нет предупреждений от компилятора или от Interface Builder, и что при запуске не выводятся сообщения на консоль.

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