场景由两个 VC 组成。 VC1 有一个推 segue 到 VC2。 VC2 在 h 文件中有一个名为 array 的公共(public)属性。 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。文件
@implementation PBVVC2
-(void)setArray:(NSMutableArray *)array{
if (_array == nil){
_array = array;
}
else {
//do some stuff here before setting _array
}
}
@end
问题出在 VC2 .m 文件中的自定义 setter 中,_array 始终为 nil。我希望 _array 在 prepareforsegue 方法第一次运行并显示 VC2 时为 nil。但是,我预计我第二次导航到 VC2 时应该从上次开始设置 _array 并且我可以检查它设置的内容....
最佳答案
当您使用 Storyboard时,iOS 会在每次触发 segue 时创建一个新的 VC2
实例。据我所知,更改它的唯一方法是手动执行推送 Controller ,但这并不是很方便。
您可以将必要的数据从 VC2
传回 VC1
(或某种类型的 DataController),然后如果它不是 nil,则在 prepareForSegue 中再次设置它
。
关于ios - 如何使用 prepareforsegueue 中的自定义 setter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20851285/