как передать объект из класса в anthoer? — представления из одного класса в другой?

#objective-c #cocoa-touch #uitableview #ios4 #uinavigationbar

#objective-c #cocoa-touch #uitableview #ios4 #панель навигации

Вопрос:

Я хочу передать представление, которое было сделано в первом представлении, как здесь

         if (self.bookDetailViewController == nil)
            {
        iPhoneStreamingPlayerViewController *aBookDetail = [[iPhoneStreamingPlayerViewController alloc] initWithNibName:@"iPhoneStreamingPlayerView" bundle:nil];
        self.bookDetailViewController = aBookDetail;
        NSLog(@"View initilaized");
        [aBookDetail release];


    }


    //call a method from another class like over here 
     [booksNavController1 nowPlayingView:bookDetailViewController];


     //in 2nd view controller 

    -(void)nowPlayingView:(iPhoneStreamingPlayerViewController *)NPView
   {

    nowPlayingSong = NPView;


    }


    -(void)getSng:(NSString *)sng
     {
     name = sng;

     }


    //ibacton for toolbar button 


    -(IBAction)nowPlaying
    { 


    Music_appAppDelegate *delegate = [[UIApplication sharedApplication]delegate];
        [delegate.booksNavController pushViewController:nowPlayingSong animated:YES];
    }
  

вот что сообщается nsloged «Приложение пыталось передать нулевой контроллер представления на целевой объект.
Завершается в ответ на завершение работы SpringBoard.»

Ответ №1:

Не выпускайте aBookDetail. т.е. закомментируйте эту строку:

     [aBookDetail release];
  

Попробуйте это и посмотрите, работает ли это.

Ответ №2:

Вы должны структурировать свою программу по-разному. Причина, по которой вы получаете null, заключается в том, что ваш класс выполняется перед печатью выходных данных.

 Parser *parserClass = [Parser new];
parserClass.array = [[NSArray alloc]initWithObjects:@"One",@"Two", nil];
NSLog(@"%@", parserClass.array);
  

Извините, но вы должны структурировать свой класс по-другому.

Или вы могли бы использовать (AppDelegate *)[[UIApplication sharedApplication]delegate]; , чтобы разрешить совместное использование между классом и AppDelegate, а затем соответствующим образом подклассировать.