2013-07-05 2 views
0

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

Это будет посмотреть длинное описание вы можете понять, что я говорю о

мой flowConverViewController подобно этому

#import <UIKit/UIKit.h> 
#import "FlowCoverView.h" 
#import "NewGameController.h" 
#import "MenuController.h" 


@class NewGameController; 


@interface FlowCoverViewController : UIViewController <FlowCoverViewDelegate> 
{ 

} 

@property (nonatomic, strong) NewGameController *game; 



- (IBAction)done:(id)sender; 



@end 

flowcontroller.m как ниже

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

- (void)flowCover:(FlowCoverView *)view didSelect:(int)image 
{ 
    NSLog(@"Selected Index %d",image); 

    UIImage *newimage = [self flowCover:view cover:image]; 

    [ 



    NSLog(@"%@",[self.game menu]); // this shows null 
    NSLog(@"%@",self.game); // this shows null thats why my below methods which are in another class is not getting called 

    [self.game menu] playMenuSound]; 



    // game is object of newGameController that we created in .h file and in 
same way in newgamecontroller there is object properly of menu class and 
playMenuSound is method in menu class 





    [self.game imagePickedFromPuzzleLibrary:newimage]; 
    [self.game startNewGame]; 


} 

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

newgamecontroller.h 

    @property (nonatomic, assign) MenuController *menu; 

    newgamecontroller.m 



     { 
     FlowCoverViewController *c = [[FlowCoverViewController alloc] init]; 

     c.game = self; 

     NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"TestFC" owner:self options:nil]; 
     c = [array objectAtIndex:0]; 

      [self presentModalViewController:c animated:YES]; 
     } 
+0

Есть ли 'self.game = [[NewGameController alloc] init ...]' где-то в вашем коде? Иначе это будет ноль. –

+0

как я уже сказал, я сделал это все в начале игры, и только один объект должен быть там целиком в игре. Не знаю, что нового. – java

+0

Что делать, если я сделаю все свойство объекта класса сильным? это будет работать? – java

ответ

1

Я извиняюсь, вы:

FlowCoverViewController *c = [[FlowCoverViewController alloc] init]; 

c.game = self; 

а затем присвоить c другой объект:

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"TestFC" owner:self options:nil]; 
c = [array objectAtIndex:0]; 

[self presentModalViewController:c animated:YES]; 

Как мог c все еще имеют свойство c.game установить правильно ??

EDIT: Попробуйте вместо

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"TestFC" owner:self options:nil]; 
FlowCoverViewController *c = [array objectAtIndex:0]; 
[self presentViewController:c animated:YES completion:nil] 

и дайте мне знать.

+0

. Примечание: – java

+0

так, как это сделать, сделайте 2 объекта один для этого массива и один для c.game? – java

+0

это то, что я все еще показывал null FlowCoverViewController * c = [[FlowCoverViewController alloc] init]; FlowCoverViewController * forarray; forarray = [массив objectAtIndex: 0]; – java