2011-03-07 4 views
1

Я редко задаю вопросы, но этот меня расстраивает, так как я не могу найти ответ нигде!Цель C - Получить класс, чтобы вернуть значение

Мне просто нужно вызвать функцию в GameChallenges.m и вернуть значение в контроллер вида. GameChallenges.m будет вызываться разными контроллерами представлений, поэтому его отдельный. Пожалуйста помоги!

У меня есть отдельный файл класса, называемый GameChallenges.

Это имеет функцию/метод в нем: в .h

@class StatsViewController; 

@interface GameChallenges : NSObject { 


    StatsViewController* statsController; 
    NSString* challengeTitle; 
} 

@property (nonatomic, retain) IBOutlet StatsViewController* statsController; 
@property (assign) NSString* challengeTitle; 

-(NSString*)checkChallenge:(int)challegeID; 

@end 

в ом

#import "GameChallenges.h" 
#import "StatsViewController.h" 

@implementation GameChallenges 
@synthesize challengeTitle,statsController; 

-(NSString*)checkChallenge:(int)challegeID{ 
    if(challegeID==1){ 
     self.challengeTitle = @"Some Text."; 
     return challengeTitle; 
    }else if(challegeID==2){ 
     self.challengeTitle = @"Some Other Text."; 
     return challengeTitle; 
    } 
} 

От контроллера зрения называется StatsViewController Я зову этот метод

.h

@class GameChallenges; 

@interface StatsViewController : UIViewController { 

     UILabel* challengeIDDescText; 
} 


@property (nonatomic, retain) IBOutlet UILabel* challengeIDDescText; 

@property (nonatomic, retain) IBOutlet GameChallenges* challenges; 

@end 

в ом

[challenges checkChallenge:tempString]; 
challengeIDDescText.text = challenges.challengeTitle; 
+0

И в чем проблема? Я не вижу проблемы, помимо вашего нетрадиционного использования методов. –

+0

Я не вижу вопроса в вашем вопросе. Но может возникнуть проблема с сообщением 'checkChallenge:', которое вы отправляете. Вы передаете ему что-то под названием 'tempString', которое (я подозреваю) экземпляр' NSString'. Но 'checkChallenge:' ожидает, что это параметр 'int', поэтому вы в основном ставите указатель' NSString' на 'int'. После этого нельзя ожидать правильного поведения. – hoha

+0

@hoha @fluchtpunkt Если я упрощу это. Если в моем GameChallenges.h у меня есть: ' @class StatsViewController; @interface GameChallenges: NSObject { \t \t StatsViewController * statsController; \t int count; } - (int) initCount; @property (присваивать) int count; ' И в моем.м: '- (int) initCount { \t count = 1; счетчик возвратов; } ' Тогда в StatsViewController.m ' NSLog (@ "количество:% я", [вызовы initCount]); ' возвращает либо 0 в нуль/ноль и т.д., это просто не могу читать то, что было возвращено , Мой вопрос: может ли кто-нибудь сказать мне, как успешно вернуть значение. Спасибо –

ответ

0

Я новичок в Objective-C, однако, код в GameChallenges.m выглядит странно для меня ... Не будет ли лучше?

challengeIDDescText.text = [challenges checkChallenge:challengeId]; 
+0

Это все еще не работает. Ive пробовал это раньше. Я не знаю, смогла ли им связать двоих вправо. Может быть, если кто-то может дать мне пример ссылки? Я просто не могу найти что-нибудь! Спасибо –

1

Ваш код довольно странно, я бы сказал, что это то, что происходит:

-[GameChallenges checkChallenge] кажется ожидать int и вы называете его с переменной называется tempString, что я предполагаю, что это NSString *. Скорее всего, ваш метод заканчивается без назначения challengeTitle и без действительного значения return. Исправьте его return nil в качестве последнего заявления и передайте int.

Такие проблемы очень легко решить с помощью отладчика.

Также посмотрите на образцы Apple.

+0

хорошая точка - что именно вы передаете как вход для checkChallenge:? Если это значение не является значением int 1 или 2, оно не возвращает или не назначает какую-либо строку. – rdamborsky

+0

@rdamborsky ничего не возвращает, даже если я упрощу код. См. Мой пост выше. –

+0

, пожалуйста, укажите мне в сторону образцов яблока, я не могу найти что-нибудь! Спасибо –

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