Проблема с ИБ - PullRequest
       34

Проблема с ИБ

0 голосов
/ 12 октября 2010

Это мой первый пост на SO, так что привет!

Я новичок в Xcode и Obj-C, так что не будь слишком резким.

Я слежу за демоиз Стэндфордского университета youtube.com/watch?v=L-FK1TrpUng По какой-то причине я столкнулся с ошибкой.Вместо того, чтобы начинать с нуля, я бы предпочел выяснить, в чем я ошибся.

Хорошо, так что дальше.

У меня есть два контроллера представления, и в настоящее время я изучаю push и pop.

Заголовок моих первых контроллеров представления (firstViewController.h):

    #import <UIKit/UIKit.h>       
@interface FirstViewController : UIViewController {
    }
     - (IBAction)pushViewController:(id)sender;
    @end

Затем изначально это было установлено в файле реализации (firstViewController.m), например

#import "firstViewController.h"
    @implementation FirstViewController
    - (IBAction)pushViewController:(id)sender{
}

В этот момент с IB я перетащил ctrl из «Владельца файла» в «UIButton» и подключил «pushViewController»

Однако где-то по пути я получил некоторую ошибку, которую я игнорировал.

Теперь мой второй контроллер представления добавлен в мой firstViewController.m следующим образом:

#import "firstViewController.h"
#import "secondViewController.h"

@implementation FirstViewController

    - (IBAction)pushViewController:(id)sender{
     SecondViewController *secondViewController = [[SecondViewController alloc] init];
     secondViewController.title = @"Second"; 
     [self.navigationController pushViewController:secondViewController animated:YES];
     [secondViewController release];
    }

Ошибка, которую я получил ранее, как-то мешает мне перетаскивать ctrl из textLabel в моем втором ViewControllernib

(seconddeViewController.h)

#import "firstViewController.h"
#import "secondViewController.h"


@implementation FirstViewController
- (IBAction)pushViewController:(id)sender{
 SecondViewController *secondViewController = [[SecondViewController alloc] init];
 secondViewController.title = @"Second";
 [self.navigationController pushViewController:secondViewController animated:YES];
 [secondViewController release];
}

Поэтому я удалил ссылки из моего исходного UIButton, щелкнув его правой кнопкой мыши в firstViewCo.ntroller.xib.

Теперь я не могу воссоздать ссылку из «Владельца файла» на выход «UIButtons», «pushViewController» (это розетка или это действие?), а также не создать ссылку в моем secondViewControllers.nib от 'File's Owner' до 'UILabel'.

Любая помощь?

Файлы проекта здесь, если кому-то интересно.http://zer -o-one.com / upload / files / PushPop.zip

Очень ценится.

1 Ответ

1 голос
/ 12 октября 2010

Розетка - это путь, соединяющий один объект с другим. Действие - это имя метода, которое вызывается для определенного объекта в ответ на событие. Какао традиционно использует цель / действие довольно много для общения, хотя теперь это частично смещается блоками.

В любом случае, ваш проект:

firstViewController.xib ошибочно полагает, что его владельцем файла является класс типа firstViewController. На самом деле он имеет тип 'FirstViewController' - как и большинство языков программирования, Objective-C чувствителен к регистру имен классов. В Интерфейсном Разработчике откройте firstViewControlller.xib, выберите «Владелец файла», откройте инспектор и перейдите на вкладку «i», затем исправьте имя класса вверху. Когда вы это сделаете, попробуйте перейти на вкладку соединений (со стрелкой, указывающей вправо), и вы увидите, что она правильно нашла ваш класс и ваш IBAction. После этого вы сможете контролировать перетаскивание.

По сути, тот же комментарий применяется к secondViewController.

Если вам интересно, Objective-C отличается, например, от C ++ в том, что все имена классов известны во время выполнения, и можно создать экземпляр класса из строковой версии его имени. Вот как загружаются XIB / NIB.

...