1

我知道这个问题已经被问过好几次了,但是经过广泛的搜索,到目前为止,没有一个对我有用。如果可能,我想避免使用单例。抱歉,如果这被视为重复问题。

我的 ViewController.m 文件中有一个 MutableArray,其中包含 5 个对象,名为 storyList。我希望能够在我的 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 时,我什么也得不到。

4

2 回答 2

0

尝试覆盖(id)initDetailViewController.m 上的方法,并在此处初始化 storyListArrayinDetail。然后,每当初始化 DetailViewController 时,您也将初始化 storyListArrayinDetail。因此,要发送您的故事列表,只需使用您的代码:

controller = [[DetailViewController alloc]init];
controller.storyListArrayinDetail = storyList;

希望有帮助

于 2013-04-03T22:49:40.103 回答
0

您可以在 DetailViewController 中创建一个新的 init 方法,并在初始化时传入数组。

//假设DetailViewController实际上是一个UIViewController,从OP中的init方法不确定。

详细视图控制器.h

@interface DetailedViewController : UIViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withDataArray:(NSArray*)dataArray;
@end

详细视图控制器.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 建议:

详细视图控制器.h

@interface DetailedViewController : UIViewController
@property(nonatomic, assign)NSArray *myDataArray;
@end

视图控制器.m

DetailedViewController *controller = [[DetailViewController alloc]init];
[controller setMyDataArray:xyArray];
于 2013-04-04T02:09:08.580 回答