我有两个视图控制器和笔尖。我用一个切换开关填充了一个视图控制器,并在其头文件中声明了这一点:
@public UISwitch *toggleSwitch;
并将其作为这样的属性公开:
@property (nonatomic,retain) IBOutlet UISwitch *toggleSwitch;
我还将交换机与toggleSwitch
插座相连。现在我想在我的其他视图控制器中使用这个toggleSwitch
字段,我该怎么做?在字段声明中没有使用@public
吗?请帮忙。谢谢。
答案 0 :(得分:0)
完全没问题。只需使用这样的开关:
vcWhereYouDeclaredTheSwitch.toggleSwitch.on = YES;
或
BOOL test = [vcWhereYouDeclaredTheSwitch.toggleSwitch isOn];
在其他视图控制器中。
以下是关于propertyys的一般想法:
内存管理:在幕后,它将创建一个setter,用正确的内存管理创建变量。它会为您节省一些麻烦,因为您可以轻松查看内存管理的完成情况(strong
/ weak
和retain
/ copy
/ { {1}})。
来自其他课程的辅助功能:如果您在.h中声明assign
而在.m中声明@property
,则您的ivar将是公共可读和可写的。您可以使用privat类扩展来阻止此操作。您甚至可以声明@synthesize
public @property
并通过privat类扩展在内部readonly
声明它们。
例如:私人财产
readwrite
自定义getter和setter :如果您愿意,您仍然可以编写自定义getter和setter,您甚至可以只编写一个getter或setter并让另一个自动 // [In the implementation file]
@interface MyClass ()
@property (nonatomic, retain) NSMutableArray* someData; // private!!
@end
@implementation MyClass @synthesize someData
@end
。你可以将自定义逻辑编写到这样的getter和setter中,例如您可以在@synthesize
更改后重新加载tableview。
自动键值观察(KVO)兼容:如果您使用或计划使用KVO,您只需通过声明属性即可免费获得。没有其他事情需要做!
如果你需要你iVar公开,写一个@property
比写一个iVar的getter和setter更简单
使用@property
,您无需在iVar中声明(在iOS和64位Mac Os X应用程序中)。您可以通过@property
:
@synthesize
答案 1 :(得分:0)
你已经取得了UISwitch的财产。因此,您可以使用viewcontroller对象在任何地方使用它。
假设您想在当前使用它的视图中使用它
self.toggleSwitch
//或
viewControllerObject.toggleSwitch