gpt4 book ai didi

ios - UITextView 表示它在不存在时为空

转载 作者:行者123 更新时间:2023-11-29 03:13:50 25 4
gpt4 key购买 nike

我正在尝试获取 UICollectionViewCell 内简单 UITextView 的文本内容。基本上,当用户共享某个单元格时,我想获取该单元格中写入的内容以在 ActivityViewController 中使用。

问题是,它说它是空白的。它显然不是空白的:当我单击“共享”时,我正看着它,里面有文本。 (文字为拍照地点的反向查找地址。)

我非常缺乏经验的眼睛认为问题在于 TextView 正在由 block 填充。我不知道为什么这会成为一个问题,但它似乎让我感到惊讶。

下面是设置单元格的方法(从而设置 TextView 的文本),然后是应该抓取它的 Share 方法:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
PhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"photoCell" forIndexPath:indexPath];

ALAsset *asset = [_photosArray objectAtIndex:indexPath.row];
ALAssetRepresentation *assetRep = [asset defaultRepresentation];

[cell.labelMain setText:[assetRep filename]];

CLLocation *location = [asset valueForProperty:ALAssetPropertyLocation];
CLGeocoder *geocoder = [[CLGeocoder alloc] init] ;
[geocoder reverseGeocodeLocation:location
completionHandler:^(NSArray *placemarks, NSError *error) {
if (error){
NSLog(@"Geocode failed with error: %@", error);
return;
}
CLPlacemark *placemark = [placemarks objectAtIndex:0];

NSArray *addressArray = [NSArray arrayWithArray:[placemark.addressDictionary valueForKey:@"FormattedAddressLines"]];
[cell.textViewDescription setText:[NSString stringWithFormat:@"%@\n%@\n%@", [addressArray objectAtIndex:0], [addressArray objectAtIndex:1], [addressArray objectAtIndex:2]]];
}];

return cell;
}

这一切似乎都很完美。但在下面的 Share 方法中,locationName 莫名其妙地变成了空白:

-(void)sharePic {
PhotoCell *currentCell = (PhotoCell*)[self collectionView:_collectionViewMain cellForItemAtIndexPath:[NSIndexPath indexPathForItem:_selectedIndex inSection:0]];

NSString *locationName = [[currentCell textViewDescription] text];
NSArray *arrayOfActivityItems = [NSArray arrayWithObjects:locationName, nil];

UIActivityViewController *activityVC = [[UIActivityViewController alloc]
initWithActivityItems:arrayOfActivityItems applicationActivities:nil];

[self.navigationController presentViewController:activityVC animated:YES completion:nil];
}

我是否正确地认为该 block 是导致 Share 方法中字符串 locationName 为空的原因? (它已正确初始化,只是一个空字符串)。如果是这样,有办法解决吗?或者如果没有,知道为什么即使 textViewDescription 中有文本,locationName 显示为空白吗?

我想要的只是获取该字段中的文本...

最佳答案

不要从单元格中取回文本。文本应该在您的数据模型中,您应该从那里获取它...

也就是说,您的问题与 block 无关(尽管异步操作有时可能会导致您出现问题)。问题是您正在创建一个新单元格而不是获取现有单元格。而不是:

PhotoCell *currentCell = (PhotoCell*)[self collectionView:_collectionViewMain cellForItemAtIndexPath:[NSIndexPath indexPathForItem:_selectedIndex inSection:0]];

你应该有:

PhotoCell *currentCell = (PhotoCell*)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:_selectedIndex inSection:0]];

关于ios - UITextView 表示它在不存在时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21902301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com