Почему я не могу вставить новый контроллер представления в текущий вид? - PullRequest
0 голосов
/ 02 ноября 2011

Я использую следующий код и получаю следующие ошибки:

Showing code used and errors with code

РЕДАКТИРОВАТЬ: См. это , если вы не можете прочитать изображение выше!

«ChangePasscode» в настоящее время объявлен как класс и представляет собой контроллер представления с файлами .h и .m вместе с файлом .nib.

Почему возникают эти проблемы, что я могу сделать дляисправить их?

Спасибо!

Ответы [ 4 ]

1 голос
/ 02 ноября 2011

Я хочу сказать, что вы не импортировали ChangePasscode.h в свой текущий файл.

Обновление: В ответ на поток комментариев ниже, вам нужно будет создать структуру навигации, если вы хотите использовать контроллеры представления. Предпочтительный способ в iOS 5 выглядит следующим образом:

// AppDelegate.h
// …Other existing code
@property (nonatomic, retain) UINavigationController *navController;
@end

// AppDelegate.m
@synthesize navController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  navController = [[UINavigationController alloc] initWithRootViewController:viewController];
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  self.window.rootViewController = navController;
  self.window.backgroundColor = [UIColor whiteColor];
  [self.window makeKeyAndVisible];
  return YES;
}
0 голосов
/ 02 ноября 2011

использование

@class ChangePasscode;

вместо использования

#import ChangePasscode.h
0 голосов
/ 02 ноября 2011

Я думаю, что это классический случай циклических ссылок. Может быть, два класса ссылаются друг на друга? Из-за этой прямой декларации вы можете получить всевозможные предупреждения при попытке обратиться к имени класса или свойствам класса, который имеет прямую декларацию.

Где все, что вы включили ChangePasscode. Также используйте #import вместо #include.

ОБНОВЛЕНИЕ : Чтобы решить вашу ld: duplicate symbol... ошибку

Кажется, вы компилируете один и тот же класс ChangePasscode два раза в разных местах вашего кода. Это может произойти в следующих случаях.

  1. Вы поместили одну и ту же реализацию класса в два разных файла
  2. На самом деле у вас есть только одна реализация этого класса, однако вы также связываете в своем проекте фреймворк или библиотеку, содержащую класс, имя которого точно совпадает с вашим.
  3. Вы также можете получить эту ошибку, если по ошибке позволите автозаполнению XCode для операторов #import указать файл «.m» для класса «duplicate» вместо «.h».

Попробуйте найти во всем проекте свой класс и убедитесь, что в вашем проекте доступна только одна копия.

0 голосов
/ 02 ноября 2011

измените [NSBundle mainBundle] на ноль, убедитесь, что у вас есть импорт ChangePasscode.h поверх файла M

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