После копирования xib и ViewController в новый проект мое приложение не рисует и вылетает при сенсорных событиях - PullRequest
0 голосов
/ 21 ноября 2011

Я скопировал некоторые файлы из очень маленького (и работающего) проекта в более крупный проект Xcode. В частности, я скопировал файл xib (только с одним элементом подкласса UIView), подкласс UIView и ViewController. Меньший проект просто рисует цветной фон и рисует круги, пока пользователь касается экрана.

Я адаптировал код большего проекта так, чтобы в начале он загружал файл xib. Я добавил это в AppDelegate, чтобы он загружал новый XIB вместо старого. (см. правку № 1 для более подробной информации)

Даже если вызывается drawRect (я тестировал добавление NSLog), ничего не отображается [*]. Более того, если я нажимаю на экран симулируемого iPhone, приложение вылетает.

int retVal = UIApplicationMain(argc, argv, nil, nil);
Program received signal EXC_BAD_ACCESS

Я не уверен, в чем проблема, поэтому, пожалуйста, дайте мне, что я могу опубликовать. У меня Xcode 4 и я работаю с iOS 5.

Спасибо за вашу помощь. Надеюсь, этот вопрос не слишком наивен.

РЕДАКТИРОВАТЬ # 1 : Это мой хиб со списком классов. Я пытаюсь отредактировать исходный код для клиента Jabber, который я нашел здесь , вставляя свои собственные представления. Я не могу опубликовать изображение, но это ссылка

http://i.stack.imgur.com/gDsNb.png

Класс CircleDrawer обрабатывает штрихи и рисует круги. Класс MTViewController отправляет тестовое сообщение. Класс JabberClientAppDelegate (практически не отличается от загруженного кода) подключается к серверу и аутентифицирует пользователя. Что я изменил, так это метод:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[MTViewController alloc] initWithNibName:@"MTViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

return YES;

/*
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

return YES;*/

}

РЕДАКТИРОВАТЬ # 2: Я начинаю с нуля. Я пытаюсь восстановить приложение, но получаю сбой. Я начал еще одно обсуждение, поскольку оно не имеет прямого отношения к этой проблеме. EXC_BAD_ACCESS сразу после прикосновения Начало

[*]: если я на мгновение имитирую нажатие кнопки «Домой», я вижу цвет фона (тогда, конечно, я больше ничего не вижу, потому что симулятор возвращается на трамплин).

1 Ответ

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

Проверьте ваш MainWindow.xib.

  1. Добавьте объект appDelegate под вашим окном (в xib).
  2. Установите свойство класса для объекта appDelegate на свой собственный класс appdelegate.
  3. Тогда ваш оконный объект должен быть подключен к свойству окна appdelegate объекта.
  4. Теперь в codebase создайте объект вашего класса viewController и добавьте подпредставление в окно.

Надеюсь, что эти шаги дадут вам некоторое представление о коде.

Полагаю, вы уже выполнили все эти шаги.

...