我知道这个问题已经被问了好几次,但是经过广泛的搜索,到目前为止它们都没有对我有用。我想尽可能避免使用单身人士。对不起,如果这被视为重复问题。
我的ViewController.m文件中有一个名为storyList的带有5个对象的MutableArray。我希望能够在我的DetailViewController.m文件中访问这个storyList数组。
我尝试过的一种方法是: (storyListArrayinDetail是detailviewcontroller中的一个新数组,storyList是来自ViewController.h的5个对象的数组) 在ViewController.h中
DetailViewController *controller;
在ViewController.m中
controller = [[DetailViewController alloc]init];
controller.storyListArrayinDetail = [[NSMutableArray alloc]init];
controller.storyListArrayinDetail = storyList;
当我在ViewController.m中记录controller.storyListArrayinDetail时,我得到了5个对象的正确数组。但是,当我在DetailViewController.m中记录storyListArrayinDetail时,我什么都没得到。
答案 0 :(得分:0)
尝试覆盖DetailViewController.m上的方法(id)init
,并在此处初始化storyListArrayinDetail。
然后,每当初始化DetailViewController时,您也将初始化storyListArrayinDetail。因此,要发送您的storyList,只需使用您的代码:
controller = [[DetailViewController alloc]init];
controller.storyListArrayinDetail = storyList;
希望有所帮助
答案 1 :(得分:0)
您可以在DetailViewController中创建一个新的init方法,并在初始化时传入该数组。
//假设DetailViewController实际上是一个UIViewController,不确定OP中的init方法。
DetailedViewController.h
@interface DetailedViewController : UIViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withDataArray:(NSArray*)dataArray;
@end
DetailedViewController.m
@interface DetailedViewController () {
NSArray *myDataArray;
}
@end
@implementation DetailedViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withDataArray:(NSArray*)dataArray
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
myDataArray = [NSArray arrayWithArray:dataArray];
}
return self;
}
...
然后在DetailedViewController中,您可以使用myDataArray
。希望有所帮助。
编辑:要包含Hot_Licks建议:
DetailedViewController.h
@interface DetailedViewController : UIViewController
@property(nonatomic, assign)NSArray *myDataArray;
@end
ViewController.m
DetailedViewController *controller = [[DetailViewController alloc]init];
[controller setMyDataArray:xyArray];