2014-02-21 3 views
0

У меня возникли проблемы с методом prepareForSegue, чтобы нажать DetailViewController.using prepareforSegue to DetailViewController

Я внимательно следил за многими учебниками, но когда я хочу использовать свои собственные данные, я явно не ошибаюсь.

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

NSURL *blogURL = [NSURL URLWithString:@"http://theforeground.co.uk/feed/json"]; 

NSData *jsonData = [NSData dataWithContentsOfURL:blogURL]; 

NSError *error = nil; 

self.blogPosts = [NSMutableArray array]; 
NSArray *blogPostsArray = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; 


for (NSDictionary *bpdictionary in blogPostsArray) { 
    BlogPost * blogPost = [BlogPost blogPostWithTitle:[bpdictionary 
     objectForKey:@"title"]]; 
    blogPost.excerpt = [bpdictionary objectForKey:@"excerpt"]; 
    blogPost.thumbnail = [bpdictionary objectForKey:@"thumbnail"]; 
    blogPost.date = [bpdictionary objectForKey:@"date"]; 
    blogPost.content = [bpdictionary objectForKey:@"content"]; 
    [self.blogPosts addObject:blogPost]; 
} 

У меня есть SEGUE от tableviewcell к detailviewcontroller и назвал его «ShowDetailView», и это метод prepareForeSegue я использовал

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"ShowDetailView"]) 
    { 
     DetailViewController *detailViewController = [segue destinationViewController]; 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     BlogPost *blogPost = [self.blogPosts objectAtIndex:indexPath.row]; 

    } 

Я импортирован «detailviewcontroller.h», чтобы " tableviewcontroller.m»и у меня есть этот propertys на файл заголовок detailviewcontroller

@property (nonatomic, strong) NSMutableArray *blogPosts; 
@property (weak,nonatomic) IBOutlet NSString *blogTitle; 

Пожалуйста, может кто-нибудь помочь этому начинающему вне. Благодаря

ответ

1

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

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"ShowDetailView"]) 
    { 
     DetailViewController *detailViewController = [segue destinationViewController]; 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     BlogPost *blogPost = [self.blogPosts objectAtIndex:indexPath.row]; 

     // You passing the data here to detail view controller 
     detailViewController.blogPost = blogPost; 

    } 
} 

Вы также должны добавить BlogPost свойство detailviewcontroller.h файла:

@property (nonatomic, strong) BlogPost *blogPost; 

После этого вы можете использовать его, например, в методе viewDidLoad в файле detailviewcontroller.m.

+0

Благодарим вас за это, я думаю, что он исправил команду readyForSegue, но она будет продолжать сбой, пока я не получу viewDidLoad прямо в файле detailviewcontroller.m. вы можете помочь с тем, как он должен выглядеть? У меня есть IBOutlets для названия блога, изображения и контента, чтобы начать с. спасибо –

+0

Опубликуйте журнал сбоев и метод viewDidLoad. – Greg

+0

Благодаря Greg, происходит ошибка здесь 'BlogPost * BlogPost = [self.blogPosts objectAtIndex: indexPath.row];' и метод viewDidLoad является '- (Недействительными) viewDidLoad { [супер viewDidLoad];' –

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