这里是一个非常菜鸟的问题。
我有 2 个 VC。
一个叫 SGPlayer
另一个是 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;
然后我将 downloadUrl 属性设置为
SGDownloader
由 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
中确实有一个综合属性类(class):@interface SGDownloader : UIViewController
@property (nonatomic, retain) NSURL *downloadURL;
@end
最佳答案
创建 downloadURL 的属性并合成它,或者您可以使用委托(delegate)在类之间传递值
关于iphone - 无法访问另一个类的@property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947921/