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

标签 ios objective-c

场景由两个 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/

相关文章:

ios - 如何在给定整数时不显示不必要的零,但在需要时仍然有 float 答案

ios - didMoveToParentViewController 和 willMoveToParentViewController

iphone - 如何创建浮点值的 NSMutableArray

ios - UICollectionView 3d 效果像 iOS 相机应用

iphone - 使用 2 个 CoreData 对象

ios - 用于 View Controller 之间交互式滑动转换的简单库

ios - Xcode中的swift语言版本build设置是什么意思?

objective-c - Apple Mach-O 链接器 (Id) 错误!!不知道该怎么办

objective-c - 将图像从 URL 加载到 UITableViewCell 的 UIImageView

ios - 是否有可能在 ios 上获得相机的焦距?