大家好,我是 Objective c 的新手,我正在寻找类似 c++ 或 java 的方法来初始化另一个UIViewController
类的对象属性。
所以我使用了 -init 函数,它似乎工作得很好,但问题是,经过一些调试后,我发现即使我的属性(an )在启动时NSString
成功初始化,它也会删除(初始化)我在 init 中所做的一切所以我不能用我的!我想播放视频链接,但我发现转到方法的字符串为空。另请注意,当我初始化视频中的流时,会立即播放。-init
viewDidLoad
property
playTheVideo
viewDidLoad
这是我的代码:
按钮控制器.m
#import "ButtonsController.h"
#import "PlayVideoController.h"
@interface ButtonsController ()
@end
@implementation ButtonsController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
**UPDATE:[self createButton];**
}
-(void)createButton {
PlayVideoController *newObject = [[PlayVideoController alloc] initWithString:@"--somestring--" ];
[newObject playTheVideo];
}
播放视频控制器.m
#import "PlayVideoController.h"
@interface PlayVideoController ()
@end
@implementation PlayVideoController
@synthesize stream;
@synthesize player;
- (void)viewDidLoad
{
[super viewDidLoad];
[self playTheVideo];
}
- (id) initWithString: (NSString*) theStream {
self = [super init];
if (self) {
stream = theStream;
}
return self;
}
- (void) playTheVideo {
NSURL *url = [NSURL URLWithString:stream];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[player loadRequest:request];
}
播放视频控制器.h
#import <UIKit/UIKit.h>
@interface PlayVideoController : UIViewController
@property NSString *stream;
@property (weak, nonatomic) IBOutlet UIWebView *player;
- (void) playTheVideo;
- (id) initWithString: (NSString*) theStream;
@end
我在主类中创建一个对象只是为了快速启动它
编辑:删除 main.m 中的操作并保留默认值