ここで本当に初心者の質問です。私は2つのVCを持っています。1 つは呼び出されSGPlayer、もう 1 つは ですSGDownloader。SGDownloader基本的にファーストクラスからのプロパティを変更したい。SGDownloader次のようにクラスをインポートします。
// SGPlayer.h
#import <UIKit/UIKit.h>
#import "SGDownloader.h"
@interface SGPlayer : UIViewController
@property (nonatomic, retain) SGDownloader *downloaderClass;
SGPlayer.mこのようなものです:
// SGPlayer.m
#import "SGPlayer.h"
@interface SGPlayer ()
@end
@implementation SGPlayer
@synthesize downloaderClass;
次に、次のようにSGDownloaderトリガーされるアクションで、クラスから downloadUrl プロパティを設定します。UIButton
- (IBAction)loadURLButton:(id)sender {
[self performSegueWithIdentifier:@"loadMyData" sender:nil];
downloaderClass.downloadURL = [NSURL URLWithString:@"http://www.google.com"];
}
NSLog私のURLに(null)を与えます。メソッドを使用prepareForSegueすると、すべて問題ありません。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"loadMyData"])
{
SGDownloader *vc = [segue destinationViewController];
vc.downloadURL = [NSURL URLWithString:@"http://www.google.com"];
}
}
問題は、ここでは使いたくないというprepareForSegueことです。
Obj-C のクラス間でデータを転送する方法の概念全体を誤解している可能性があると思います。
編集:
クラスに合成されたプロパティがありますSGDownloader:
@interface SGDownloader : UIViewController
@property (nonatomic, retain) NSURL *downloadURL;
@end