IBOutlet не подключается в Интерфейсном Разработчике - Xcode 4.2 - PullRequest
5 голосов
/ 02 декабря 2011

Я читал другие вопросы здесь, но они, кажется, для Xcode 3.2 или более ранней версии, но ничего для 4.2.: (

Я запустил простой проект и хотел подключить выходы владельца файла в моей xib. Облом - то, что мой IBOutlet из моего ViewController.h не подходит.

Iне имеет репутации 10 или выше, поэтому вот скриншот владельца моего файла, не показывающий мои IBOutlets .

Вот мой код ViewController.h:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController { 
    IBOutlet UITextField *txtName; 
    IBOutlet UILabel *lblMessage;
}

@property (nonatomic, retain) IBOutlet UITextField *txtName;
@property (nonatomic, retain) IBOutlet UILabel *lblMessage;

- (IBAction)doSomething;

@end

Вот мой код ViewController.m:

#import "ViewController.h"

@implementation ViewController

@synthesize txtName;
@synthesize lblMessage;

- (IBAction) doSomething
{
    NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@",txtName.text];
    [lblMessage setText:msg];
}

@end

Я новичок в Objective-C и Xcode, поэтому я мог ошибиться, но я следовал многим учебникам и никогда не смогучтобы мои IBOutlets были показаны. Я зашел так далеко, что удалил Xcode 4.2 и переустановил, чтобы попытаться исправить эту проблему. Вот скриншот моей версии Xcode 4.2, сборка 4D199 info .

Кто-нибудь еще сталкивался с этой проблемой? Спасибо всем, кто может указать на любые ошибки, которые я сделал. Пожалуйста, дайте мне знать, если требуется дополнительная информация.

Ответы [ 5 ]

16 голосов
/ 02 декабря 2011

При создании IBAction в файле .h слева от него будет индикатор подключения. Когда он не подключен, он показывает пустой круг.

Нажмите и удерживайте эту кнопку и перетащите ее к элементу, к которому хотите подключиться. Я обычно открываю XIB в новом окне, дважды щелкая по нему.

Connect the IBAction to your button by dragging from the the .h file


Если он не подключается, вы должны установить File's Owner в файле XIB. Выберите File's Owner на панели «Заполнители». Перейдите на панель «Утилиты» и убедитесь, что для Custom class в Identity Inspector задано имя, которое когда-либо назывался вашим контроллером представления.

Set files owner

Надеюсь, это поможет вам.

Ура!

4 голосов
/ 02 декабря 2011

Попробуйте переназначить ссылку на класс владельца файла в xib-файле.

Затем присоедините все свои соединения IBOutlet.

Надеюсь, это может быть полезно для вас.

1 голос
/ 02 декабря 2011

Проверьте, не установлен ли для владельца файлов «ViewController».Проверьте следующую ссылку: http://developer.apple.com/library/ios/#documentation/IDEs/Conceptual/Xcode4TransitionGuide/InterfaceBuilder/InterfaceBuilder.html

0 голосов
/ 01 марта 2016

Я наконец-то разобрался с проблемой, надеюсь, это поможет всем, у кого сейчас такая же проблема.Это не имеет ничего общего с настройкой владельца файла XIB.Моя проблема заключалась в том, что у меня был файл xib в другом каталоге, чем исходные файлы, поэтому он не мог подключиться к розеткам.Как только я переместил файлы в ту же директорию, все заработало.К вашему сведению, я переместил все в верхний каталог.Не уверен, что подкаталоги будут работать ...

Для перемещения файлов обязательно обновите xcode, чтобы он указывал на новые местоположения.

0 голосов
/ 21 января 2015

Необходимо добавить две вещи, прежде чем Xcode разрешит создание IBOutlet для текстового поля из раскадровки:

  1. Назначьте базовый ViewController в качестве делегата UITextField
  2. Добавьте к объявлению @interface в файле ViewController.h:

    @ interface ViewController: UIViewController <<strong> UITextFieldDelegate >

Дооба они завершены, вы можете нажать Ctrl и перетащить из Раскадровки в файл .h, но соединение IBOutlet не будет включено.

...