[ios]objective-c 创建一个 ViewController 实例

发布时间: 2017/3/21 23:21:16
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要创建 ViewController 类的一个实例︰

ViewController *viewConnection = [[ViewController alloc]init];

self.image.center = CGPointMake(self.image.center.x + 1, self.image.center.y);

if (CGRectIntersectsRect(self.image.frame, viewConnection.otherImage.frame)) {
    [self.movementTimer invalidate];
}`

当在类中的图像来袭 ViewController 中的图像时,它并不进入 if 语句,有人可以告诉我为什么吗?

解决方法 1:

若要访问的变量和网点必须在.h 文件中定义的特性︰

@interface ViewController : UIViewController
//Property
@property (nonatomic, copy) NSString *myString;
//Outlet
@property (nonatomic, weak) IBOutlet UILabel *myLabel;
@end

在那之后,你可以创建对象并访问它的属性︰

ViewController *viewConnection = [[ViewController alloc]init];
viewConnection.myString = @"string";
viewConnection.myLabel.text = @"label text";

扩展

在您的示例中您创建 viewConnection 对象并在那之后你检查属性的框架︰

viewConnection.otherImage.frame

但您还没有设置它,您还没有设置 otherImage,您还没有设置它的框架,所以这就是为什么你有问题。

扩展的 2

它之所以不工作是因为你试着去改变帧的属性 (otherImage),我以为它是 IBOutlet 只是之后你初始化视图控制器但后来在视图控制器生命周期中创建的 IBOutlets,你应该有机会在 viewDidLoad 或 viewDidAppeare 但是这种方法发射后你现在推视图控制器网点。所以你应该创建变量,比方说 CGRect 并且之后你初始化视图控制器设定了它值后,推动当前视图控制器并在您的类 (ViewController),例如,在 viewDidLoad 设置 otherImage.frame = 变量。

官方微信
官方QQ群
31647020