场景包含两个VC。 VC1有一个推送到VC2的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并且我可以检查它的设置是什么....
答案 0 :(得分:2)
当您使用故事板时,每次触发segue时,iOS都会创建VC2
的新实例。我知道改变它的唯一方法是手动执行推送控制器,但这并不是很方便。
您可以将必要的数据从VC2
传递回VC1
(或某种类型的DataController),然后如果它不是nil,请在prepareForSegue
中再次设置。