如何使用prepareforsegueue中的自定义setter方法

时间:2013-12-31 03:30:05

标签: ios objective-c

场景包含两个VC。 VC1有一个推送到VC​​2的segue。 VC2在名为array的h文件中有一个公共属性。 VC2有一个为数组定义的自定义setter。如下:

VC1 .m文件

@implementation PBVViewController

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {


NSMutableArray *feeder = [[NSMutableArray alloc] initWithObjects:@"one", @"two", @"three", nil];

[(PBVVC2 *)segue.destinationViewController setArray:feeder] ;

}

@end

vc2 .h文件

@interface PBVVC2 : UIViewController

@property (copy, nonatomic) NSMutableArray *array;

-(void)setArray:(NSMutableArray *)array;

@end

VC2。 m档

@implementation PBVVC2

-(void)setArray:(NSMutableArray *)array{

if (_array == nil){

    _array = array;
}

else {
    //do some stuff here before setting _array
}
}
@end

问题出在VC2 .m文件中的自定义setter中,_array总是为零。我希望在第一次执行prepareforsegue方法并显示VC2时,_array为nil。但是,我预计第二次导航到VC2时应该从上次设置_array并且我可以检查它的设置是什么....

1 个答案:

答案 0 :(得分:2)

当您使用故事板时,每次触发segue时,iOS都会创建VC2的新实例。我知道改变它的唯一方法是手动执行推送控制器,但这并不是很方便。 您可以将必要的数据从VC2传递回VC1(或某种类型的DataController),然后如果它不是nil,请在prepareForSegue中再次设置。