ここで本当に初心者の質問です。私は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