我有一个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
中选择的值?
答案 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;