Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从另一个类访问IBOutlet_Ios_Objective C_Xcode_Uibutton_Iboutlet - Fatal编程技术网

Ios 从另一个类访问IBOutlet

Ios 从另一个类访问IBOutlet,ios,objective-c,xcode,uibutton,iboutlet,Ios,Objective C,Xcode,Uibutton,Iboutlet,嘿,我有两个uiviewcontroller。在第一个按钮中,有一个包含图像的ui按钮。当用户进入我的第二个ViewController时,有许多按钮,其中包含不同的图像。因此,当用户按下我的VC2中的一个按钮时,它应该将图像从自身设置为我的VC1上的UIButton 我已经通过添加以下内容实现了第一个VC: #在@interface ViewController2()之前将“ViewController1.h”导入到ViewController2.m 我该怎么做?例如: VC2: 谢谢 步骤1

嘿,我有两个
uiviewcontroller
。在第一个按钮中,有一个包含图像的
ui按钮。当用户进入我的第二个
ViewController
时,有许多按钮,其中包含不同的图像。因此,当用户按下我的VC2中的一个按钮时,它应该将图像从自身设置为我的VC1上的UIButton

我已经通过添加以下内容实现了第一个VC:
#在
@interface ViewController2()之前将“ViewController1.h”导入到
ViewController2.m

我该怎么做?例如:

VC2:


谢谢

步骤1:在ViewController2.h中,在VC2上创建一个属性以引用VC1:

#import "ViewController1.h"

@property (nonatomic, strong) ViewController1 *viewController1;
步骤2:在VC1中创建VC2时,设置属性:

[viewController2 setViewController1:self];
步骤3:在ViewController2上设置按钮图像

[self.buttonVC2 setImage:[self.viewController1.buttonVC1 imageForState:UIControlStateNormal] forState:UIControlStateNormal];
注意:更好的模型是在VC1上提供一个返回正确图像的方法。例如,在VC1中:

- (UIImage *)imageForButton {
    return [self.buttonVC1 imageForState:UIControlStateNormal];
}
在VC2中:

[self.buttonVC2 setImage[self.viewController1 imageForButton]];

步骤1:在ViewController2.h中,在VC2上创建一个属性以引用VC1:

#import "ViewController1.h"

@property (nonatomic, strong) ViewController1 *viewController1;
步骤2:在VC1中创建VC2时,设置属性:

[viewController2 setViewController1:self];
步骤3:在ViewController2上设置按钮图像

[self.buttonVC2 setImage:[self.viewController1.buttonVC1 imageForState:UIControlStateNormal] forState:UIControlStateNormal];
注意:更好的模型是在VC1上提供一个返回正确图像的方法。例如,在VC1中:

- (UIImage *)imageForButton {
    return [self.buttonVC1 imageForState:UIControlStateNormal];
}
在VC2中:

[self.buttonVC2 setImage[self.viewController1 imageForButton]];

步骤1:在ViewController2.h中,在VC2上创建一个属性以引用VC1:

#import "ViewController1.h"

@property (nonatomic, strong) ViewController1 *viewController1;
步骤2:在VC1中创建VC2时,设置属性:

[viewController2 setViewController1:self];
步骤3:在ViewController2上设置按钮图像

[self.buttonVC2 setImage:[self.viewController1.buttonVC1 imageForState:UIControlStateNormal] forState:UIControlStateNormal];
注意:更好的模型是在VC1上提供一个返回正确图像的方法。例如,在VC1中:

- (UIImage *)imageForButton {
    return [self.buttonVC1 imageForState:UIControlStateNormal];
}
在VC2中:

[self.buttonVC2 setImage[self.viewController1 imageForButton]];

步骤1:在ViewController2.h中,在VC2上创建一个属性以引用VC1:

#import "ViewController1.h"

@property (nonatomic, strong) ViewController1 *viewController1;
步骤2:在VC1中创建VC2时,设置属性:

[viewController2 setViewController1:self];
步骤3:在ViewController2上设置按钮图像

[self.buttonVC2 setImage:[self.viewController1.buttonVC1 imageForState:UIControlStateNormal] forState:UIControlStateNormal];
注意:更好的模型是在VC1上提供一个返回正确图像的方法。例如,在VC1中:

- (UIImage *)imageForButton {
    return [self.buttonVC1 imageForState:UIControlStateNormal];
}
在VC2中:

[self.buttonVC2 setImage[self.viewController1 imageForButton]];

这就是代表们的作用所在。定义如下:

@protocol ButtonSelectionDelegate <NSObject>

- (void)didSelectButtonImage:(UIImage *)image;

@end
在VC1的
didSelectButtonImage:
中,您将使用委派提供的VC2更新插座按钮图像:

- (void)didSelectButtonImage:(UIImage *)image
{
    [self.buttonOutlet setImage:image forState:UIControlStateNormal];
}

这就是代表们的作用所在。定义如下:

@protocol ButtonSelectionDelegate <NSObject>

- (void)didSelectButtonImage:(UIImage *)image;

@end
在VC1的
didSelectButtonImage:
中,您将使用委派提供的VC2更新插座按钮图像:

- (void)didSelectButtonImage:(UIImage *)image
{
    [self.buttonOutlet setImage:image forState:UIControlStateNormal];
}

这就是代表们的作用所在。定义如下:

@protocol ButtonSelectionDelegate <NSObject>

- (void)didSelectButtonImage:(UIImage *)image;

@end
在VC1的
didSelectButtonImage:
中,您将使用委派提供的VC2更新插座按钮图像:

- (void)didSelectButtonImage:(UIImage *)image
{
    [self.buttonOutlet setImage:image forState:UIControlStateNormal];
}

这就是代表们的作用所在。定义如下:

@protocol ButtonSelectionDelegate <NSObject>

- (void)didSelectButtonImage:(UIImage *)image;

@end
在VC1的
didSelectButtonImage:
中,您将使用委派提供的VC2更新插座按钮图像:

- (void)didSelectButtonImage:(UIImage *)image
{
    [self.buttonOutlet setImage:image forState:UIControlStateNormal];
}

将门店视为私人场所。如果视图控制器之间要传递信息,则应使用方法对其进行配置,以便一个控制器可以在另一个控制器中调用该方法。将插座视为专用插座。如果视图控制器之间要传递信息,则应使用方法对其进行配置,以便一个控制器可以在另一个控制器中调用该方法。将插座视为专用插座。如果视图控制器之间要传递信息,则应使用方法对其进行配置,以便一个控制器可以在另一个控制器中调用该方法。将插座视为专用插座。如果视图控制器之间要传递信息,则应使用方法对其进行配置,以便一个控制器可以在另一个控制器中调用该方法。由于高度耦合,这种做法非常糟糕。更不用说强大的控制器保持力,在某些条件下,由于高耦合,很容易导致保持循环不良实践。更不用说强大的控制器保持力,在某些条件下,由于高耦合,很容易导致保持循环不良实践。更不用说强大的控制器保持力,在某些条件下,由于高耦合,很容易导致保持循环不良实践。更不用说强大的控制器保留,在某些条件下可能很容易导致保留周期