Подтвердить что ты не робот

IB - Невозможно назначить класс для контроллера View

Я новичок в разработке IOS, и у меня есть проблема, с которой я не сталкивался раньше. Вот что у меня есть:

Я создал проект, добавил некоторые ViewControllers, прикрепленные к их собственным классам. Но теперь я просто добавил новый просмотрщик в раскадровку. Затем я создал новый класс Objective-C (с подклассом UIViewController). Проблема в том, что в IB я не могу связать ViewController с вновь созданным классом, поскольку у меня просто нет класса в списке, представленном IB (см. Изображение ниже). Мой новый класс называется MapShownViewController, но, как вы можете видеть на изображении, он недоступен.

enter image description here

Он работал хорошо для всех моих других классов, но не для этого.

Здесь MapShownViewController.h:

#import <UIKit/UIKit.h>

@interface MapShownViewController : UIViewController

@end

И MapShownViewController.m:

#import "MapShownViewController.h"

@interface MapShownViewController ()

@end

@implementation MapShownViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    return self;
}

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

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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

Может кто-нибудь объяснить мне, что я сделал неправильно?

4b9b3361

Ответ 1

У меня была эта точная проблема, и это сбило меня с ума. Я впервые заметил это после обновления XCode до 4.4 из 4.1. У меня был существующий проект, над которым я работал в старой версии XCode, и я продолжал работать над ним в 4.4. Я сделал именно то, что вы сделали, и создал новый вид в доске объявлений, а затем создал файлы подкласса, но класс просто не был доступен в раскрывающемся списке Custom Class в IB. После долгих разгулов и разочарования я прибег к Quit Xcode (полный выход, а не только близко), а затем снова запустите его. Затем, как по волшебству, все это начало работать, и новый класс был сразу доступен в раскрывающемся списке пользовательского класса IB.

Ответ 2

В этой же проблеме возникла проблема, и перезапуск XCode не помог. Вы всегда можете щелкнуть правой кнопкой мыши раскадровку и выбрать Open As > Source Code. Найдите элемент контроллера вида в файле XML и добавьте атрибут customClass:

<viewController title="Login" id="TJH-Bg-q4u" customClass="XYZLoginViewController" sceneMemberID="viewController">
   ...
</viewController>

Ручное переопределение FTW:).

Ответ 3

Проверьте настройки проекта. xcode- > target- > строить фазы- > компилировать источники в этот список должен быть добавлен файл реализации viewcontroller.

Ответ 4

Для этого вам необходимо убедиться в следующем:

1) Элемент, добавленный в раскадровку, - это UIViewController

2) Класс, который вы определили, имеет UIViewController как его суперкласс

@interface MapShownViewController : UIViewController

3) Класс правильно строится в проекте.

Ответ 5

Я столкнулся с этой проблемой и попробовал все другие решения, размещенные здесь.

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

например.

class LabsViewController: UITableViewController {

Ответ 6

Проверьте, действительно ли вы выбрали правильный суперкласс в своем новом классе. Иногда вы создаете контроллер вида, унаследованный UITableVIewController. Это нельзя применить к шаблону ViewController в раскадровке.

Ответ 7

Мне пришлось установить свой собственный класс, который наследуется от UIViewController и действовать как контроллер табличного представления для UITableViewController. Я сделал простой трюк и просто изменил свое собственное наследование класса на ": UITableViewController", а затем я могу свободно устанавливать этот класс в контроллер. Конечно, после того, как он был установлен, я изменил наследование назад.

Ответ 8

У меня была такая же проблема с Xcode 7.1.1 в приложении Mac OSX. Я пробовал все предложения из других ответов - без успеха.

Наконец, я удалил файлы контроллера view и создал новые. Тогда это внезапно сработало...

Ответ 9

Просто добавив еще одно возможное решение, которое помогло решить мою проблему, поскольку другие не сделали.

Я заметил, что поиск моего пользовательского файла View Controller с помощью Command + Shift + O был найден, но я не мог видеть, в какой папке был файл, поэтому я заметил, что по какой-то причине мой пользовательский класс отсутствовал проект, но все еще находится в поиске.

Все, что я должен был сделать, это снова переместить файлы в проект и Voila!

Надеюсь, это поможет кому-то в будущем.