在UITextView中显示UITableView中选定的CoreData值

时间:2015-05-30 09:06:29

标签: ios uitableview core-data nsfetchedresultscontroller nsmanagedobject

我有一个TableViewController来取CoreData。此外,如果我点击一个单元格,它会转移到DetailViewController。但我不知道如何在UITextView中所选行的DetailViewController中显示值。

AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
_managedObjectContext  = delegate.managedObjectContext;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]initWithEntityName:@"Note"];
_fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:fetchRequest managedObjectContext:_managedObjectContext sectionNameKeyPath:nil cacheName:nil];

[_fetchedResultsController setDelegate:self];
NSError *error = nil;
[_fetchedResultsController performFetch:&error];
if (error) {
    NSLog(@"Unable to perform Fetch");
    NSLog(@"%@, %@", error, error.localizedDescription);


    NSArray *objects = [_managedObjectContext executeFetchRequest:fetchRequest error:&error];

如何显示值以及如何确保显示的值是我在TableViewController中选择的值?

1 个答案:

答案 0 :(得分:0)

您不必在detailViewController中获取任何内容,因为tableViewController已经拥有该对象。只需将文本(或对象)传递给详细视图控制器即可。

向detailViewController添加属性。 (它可以是NSString或NSManagedObject实体。)

@property (nonatomic, strong) NSString *detailText

prepareForSegue:sender:中,将detailViewController属性设置为与所选行关联的NSManagedObject的(文本字符串):

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)__unused sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"])
    {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
        DetailViewController *controller = (DetailViewController *)[[segue destinationViewController] topViewController];
        controller.detailText = [object valueForKey:@"myTextProperty"];
    }
}

在详细视图控制器中,将文本分配给UITextView

myTextview.text = self.detailText;