有没有人知道如何从子视图(子)视图控制器更新属性值? 我有一个名为statusid的int属性,在父视图控制器中使用gettor / settor定义。 [self.view addSubview:detailsVC.view];
在子视图中,我尝试调用[super statusid:updatedValue];将statusid更新为新值,但这会产生错误。如何更新父级中的statusid?有谁知道怎么做?
答案 0 :(得分:6)
使用“super”访问您的基类,即当前类继承自
的基类要执行您所解释的操作,您需要访问父视图的属性,这很复杂,因为这很可能会因两个类都试图互相引用而结束。 因此,你很可能必须创建一个委托模式,看起来有点像这样
ParentView.h
@protocol IAmYourFatherAndMotherProtocol
@class ChildView;
@interface ParentView : UIViewController <IAmYourFatherAndMotherProtocol>
{
NSInteger statusID;
}
@property (nonatomic) NSInteger statusID;
@protocol IAmYourFatherAndMotherProtocol
@property (nonatomic) NSInteger statusID;
@end
@end
在ChildView.h中
#import "ParentView.h"
@interface ChildView : UIViewController
{
id<IAmYourFatherAndMotherProtocol> delegate;
}
@property (nonatomic, assign) id <IAmYourFatherAndMotherProtocol> delegate;
在ParentView.m中创建ChildView时,您必须将“self”设置为委托,例如:
ChildView *newChild = [[ChildView alloc] init];
newChild.delegate = self;
通过这样做,您可以在ChildView.m中访问ParentView的“statusID”,如下所示:
delegate.statusID = 1337;
希望这会有所帮助
答案 1 :(得分:0)
在super上调用方法调用超类的方法实现,它会调用superview的/ super视图控制器的实现。
您需要在子视图控制器中保留对父级的引用,并在父级上调用setStatusId:方法,或者在两者之间创建委托模式,以便让子级委托(可能设置为父级)知道状态ID已更改。