#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, а затем соответствующим образом подклассировать.