したがって、このチュートリアルiphonedevsdkを使用して、2つのビュー間でデータを渡そうとしています(最初のビューはtableViewController、セルが押されたときにデータが2番目のビューに送信され、2番目のビューがimageViewを取得し、データが送信されたときに画像が表示されます)。
ビューで同じAppDataObjectメソッドを使用しています。
- (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;
しかし、私はプロトコルの使い方を理解したいと思います。
私が試したこと:theDataObjectをグローバルにする:
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)ですが、これはどのように可能ですか?