Элементы управления именами с использованием XCode Storyboarding - PullRequest
1 голос
/ 05 марта 2012

Я изучаю основы управления и обработки событий при переходе с .NET на Objective-C.

Я создал проект Single View в XCode 4.2, используя ARC и раскадровку.На раскадровке ViewController имеет один UIImageView и UIButton.UIImageView присваивается имя imgLock в записи метки инспектора идентификации.Эта же техника используется для именования кнопки «btnToggle».

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
  IBOutlet UIButton *btnToggle;
  IBOutlet UIImageView *imgLock;
}

- (IBAction) toggleImage;

@property (readonly, strong) UIButton *btnToggle;
@property (readwrite, strong) UIImageView *imgLock;
@end

ViewController.m

#import "ViewController.h"

@implementation ViewController
@synthesize btnToggle, imgLock;

BOOL imgState;

- (void) toggleImage {
    UIImage *img = [UIImage imageNamed: imgState ? @"Unlocked64" : @"Locked64"];
    imgState = !imgState;
    [imgLock setImage: img];
}

На раскадровке я нажимаю Ctrl-перетащил синюю линию от кнопки к изображению и выбрал toggleImage в результирующем контекстном меню.

Когда я ставлю точку останова в toggleImage и строю / запускаю проект, я вижу, что все какдолжно быть, за исключением того, что imgLock равно 0x0.По моим дням в Windows, я ожидал, что элементы управления будут созданы, потому что они были «размещены в форме».

В журнале нет комментариев, кроме предупреждения при завершении процесса: предупреждение: ошибка в строке 2184 "/SourceCache/gdb/gdb-1708/src/gdb/macosx/macosx-nat-inferior.c" в функции "void macosx_kill_inferior_safe ()"

1 Ответ

2 голосов
/ 05 марта 2012

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

Я не совсем уверен, что вы здесь сделали, но вам нужно перетащить эту линию между вашим объектом ViewController и каждой кнопкой и изображением. Удерживая нажатой клавишу «control», перетащите значок, представляющий контроллер представления, на кнопку, а затем выберите btnToggle. Удерживая нажатой кнопку «control», снова перетащите курсор с контроллера на изображение, и на этот раз выберите imgLock.

.

Далее вам нужно убедиться, что ваша кнопка связана с целью и действием. Действие - это сообщение, которое будет отправлено при нажатии кнопки, а цель указывает объект, на который будет отправлено это сообщение действия. Чтобы установить их, перетащите элемент управления с кнопки на контроллер представления (поскольку вы хотите, чтобы контроллер представления был целью). Выберите метод toggleImage: из всплывающего списка, чтобы выбрать его в качестве действия.

По моим дням в Windows, я ожидал, что управление будет созданный, потому что они были «помещены в форму».

Вы в основном создаете их экземпляры, когда создаете их в раскадровке. Как и файл .xib, файл раскадровки содержит сериализованные объекты. Когда вы загружаете контроллер представления и связанный с ним вид из раскадровки, эти объекты «десериализуются» обратно в объекты, которые вы можете использовать. Выходы вашего контроллера представления - это ссылки на другие объекты в раскадровке; эти ссылки будут создаваться вместе с объектами, но вы должны соединить их в раскадровке.

...