gpt4 book ai didi

iphone - 在 View 之间传递数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:26 24 4
gpt4 key购买 nike

所以我尝试使用本教程在两个 View 之间传递数据(第一个 View 是 tableViewController,当单元格被按下时数据被发送到第二个 View ,第二个 View 得到 imageView,当数据被发送时显示图像)iphonedevsdk .

我在我的 View 中使用相同的 theAppDataObject 方法:

- (AppDataObject*) theAppDataObject
{
id<AppDelegateProtocol> theDelegate = (id<AppDelegateProtocol>) [UIApplication sharedApplication].delegate;
AppDataObject* theDataObject;
theDataObject = (AppDataObject*) theDelegate.theAppDataObject;
return theDataObject;
}

当按下单元格时,我正在尝试发送数据 theAppDataObject.imageString = tempImageString;:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
tempImageString = (((championList *) [self.champions objectAtIndex:indexPath.row]).championImage);

AppDataObject *theDataObject = [self theAppDataObject];
NSLog(@"tempIm-g = %@",tempImageString);
theDataObject.imageString = tempImageString;
NSLog(@"theAppDataObject.imageString = %@",theDataObject.imageString);

[self.navigationController popToRootViewControllerAnimated:YES];
}

NSLog输出:

tempIm-g = Champ_0.jpg

theAppDataObject.imageString = (null)

SecondViewController(显示图片):

-(void)viewWillAppear:(BOOL)animated
{
AppDataObject* theDataObject = [self theAppDataObject];
UIImage *tempImage = [UIImage imageNamed:theDataObject.imageString];
NSLog(@"temp image = %@",tempImage);
[choosenChampionImageView setImage:tempImage];
}

NSLog 输出:

临时图像 = (null)

我的问题是 AppDataObject.imageString 总是 null


我知道的可能的解决方案:

不要将 AppDataObject 用作​​通用数据容器,只需将数据保存在 appDelegate 中。

例如:

AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
appdelegate.imageString = tempImageString;

但我想弄清楚如何使用协议(protocol)。

我试过的:使 DataObject 成为全局对象:

view1.h

@interface championsListTableViewController : UITableViewController
{
NSString *tempImageString;

AppDataObject* theDataObject;
}

@property(strong,nonatomic) NSString *tempImageString;

@property(strong,nonatomic) AppDataObject* theDataObject;

输出 NSLog(@"theDataObject is %@",theDataObject); :

theDataObject 是 (null),这怎么可能?

最佳答案

首先检查 theAppDataObject 是否为 null。

如果为空则:

在您的界面中写入 AppDataObject* theDataObject; 并将属性声明为 strong

如果 theDelegate.theAppDataObject 返回 null ,首先分配该对象。

如果不为空则:

更改此行 theAppDataObject.imageString = tempImageString;

theAppDataObject.imageString = [tempImageString retain];

如果您使用的是 ARC,请将 imageString 的属性设置为 strong

或用这个检查

theAppDataObject.imageString = [[NSString alloc] initWthString:tempImageString];

关于iphone - 在 View 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12652312/

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