2015-08-11 3 views
1

Я посмотрел на всех других людей, у которых была эта ошибка, и я знаю, что это ошибка пути, и да, я попытался выйти и перезагрузить ее, я проверил пути использовали современные файлы, и большинство из них предлагали без успеха. Я пытаюсь получить методы от TapViewController для запуска в JumpController. Я упростил метод, который я хочу вызвать, чтобы облегчить поиск проблемы, но все же у меня проблемы. Вот соответствующий код, который я до сих пор:Objective-C: использование методов из других файлов

TapViewController.h

-(void)hello; 

TapViewController.m

-(void)hello { 
    NSLog(@"Hello"); 
} 

JumpController.h

#import <UIKit/UIKit.h> 
#import 'TapViewController.h' 

@property (strong, nonatomic) TapViewController *TapView; 
@property (strong, nonatomic) JumpController *JumpControl; 

JumpController.m

-(void)viewDidLoad { 
    self.JumpControl = (TapViewController *)[UIApplication sharedApplication].delegate; 
    self.TapView = [[TapViewController alloc] init]; 
    [self.JumpControl.TapView hello]; 
} 

Я захватил большую часть этого кода из того, что говорили другие, поэтому я действительно не знаю, не является ли какая-то его часть или все это поможет в ситуации. В основном, приложение падает, когда оно загружается, указывая [AppDelegate TapView]: unrecognized selector sent to instance.... Дайте мне знать, если я что-то делаю неправильно, или если я упустил соответствующий код!

UPDATE: Используя то, что другие сказали, и из моих собственных личных изменений, Похоже, что проблема не только с self.JumpControl = (TapViewController *)[UIApplication sharedApplication].delegate, но и с self.JumpControl в целом. Поскольку я создал TapViewController *TapView в файле .h, нет причин использовать self.JumpControl, что вызвало проблемы с порядком представлений, которые появились. Я буду отмечать almas как правильно, но я хотел уточнить, что еще нужно сделать.

+0

Это не решит проблему. Но для начала вы можете переименовать все свойства, которые тоже начинаются с строчной буквы. 'self.jumpControl' –

+0

- это TapViewController - подкласс UIApplicationDelegate? Я сомневаюсь. –

+0

Когда вы устанавливаете 'self.jumpControl.tapView'? Насколько мы можем видеть, это скорее всего к тому моменту, когда вы вызываете привет на этом объекте. А в Obj-C вы можете отправлять сообщения (методы вызова) на nil. Попробуйте 'self.jumpControl setTapView (self.tapView)' перед вызовом или вызовом '[self.tapView hello]'. –

ответ

1

Ваша проблема здесь: "self.JumpControl = (TapViewController *)[UIApplication sharedApplication].delegate;". Вы пытаетесь использовать приложение AppDelegate для TapViewController, поэтому он сбой. AppDelegate не является контроллером представления. В вашем сообщении об ошибке [AppDelegate TapView]: unrecognized selector sent to instance четко указано, что AppDelegate не распознает метод «TapView», потому что делегат приложения не является экземпляром «TapViewController».

+0

поэтому после того, как я избавлюсь от него, я получаю сообщение «Предупреждение: попытка представить в , чей вид не находится в иерархии окон! _ (Да, было восклицательный знак). У вас есть идеи по изменению этого? – Kiley

+0

Можете ли вы опубликовать свое приложение на github и предоставить ссылку, чтобы я мог посмотреть, что вы пытаетесь сделать? – almas

+0

К сожалению, это частный проект, но в настоящее время я просто пытаюсь зарегистрировать «Hello», когда Jump Controller загружается и идет оттуда, когда это работает. – Kiley

Смежные вопросы