Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我们如何访问添加在不同UIView类中的viewcontroller类中的数组的值。。?_Ios_Arrays_Uiview - Fatal编程技术网

Ios 我们如何访问添加在不同UIView类中的viewcontroller类中的数组的值。。?

Ios 我们如何访问添加在不同UIView类中的viewcontroller类中的数组的值。。?,ios,arrays,uiview,Ios,Arrays,Uiview,viewcontroller.m具有以下代码 - (void)viewDidLoad { [super viewDidLoad]; self.array=[[NSArray alloc]initWithObjects:@"hi",@"hello", nil]; NSLog(@"%@",self.array); view *view1=[[view alloc]init]; [view1 addSubview:self.view]; view1.viewController=self;

viewcontroller.m具有以下代码

- (void)viewDidLoad
{
[super viewDidLoad];


self.array=[[NSArray alloc]initWithObjects:@"hi",@"hello", nil];
NSLog(@"%@",self.array);

view *view1=[[view alloc]init];
[view1 addSubview:self.view];
 view1.viewController=self;

}
还有另一个UIView类,我正在尝试访问该数组: .h文件:

#import <UIKit/UIKit.h>
#import "ViewController.h"

@class ViewController;

@interface view : UIView{
ViewController *viewController;


}
@property (nonatomic,retain)ViewController *viewController;


@end
我查看了stackoverflow的其他帖子,其中只提到了ViewController之间的值传递;或者数组在appdelegate中声明并在类中使用(我希望避免)

上面最后一个代码段中的NSLog给出null;因此,请您帮助访问此数组的值。 提前谢谢

这条线

view *view1=[[view alloc]init];
在设置
view1.viewController
之前调用所需的初始值设定项

NSLog(@"%@",[viewController array]);
实际上打电话

NSLog(@"%@",[null array]);
或者(请注意,这是伪代码)

您要做的是在分配后使用
view1.viewController
。最佳做法是创建一个自定义构造函数,将
UIViewController*
作为参数并使用它。

这一行

view *view1=[[view alloc]init];
在设置
view1.viewController
之前调用所需的初始值设定项

NSLog(@"%@",[viewController array]);
实际上打电话

NSLog(@"%@",[null array]);
或者(请注意,这是伪代码)


您要做的是在分配后使用
view1.viewController
。最佳做法是制作一个自定义构造函数,将
UIViewController*
作为参数并使用它。

您可以在ViewController中使用此代码来实现

#import "view.h"

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSArray *ary = [NSArray arrayWithObjects:@"7",@"5",@"3",@"2", nil];

    view *v=[[view alloc] init];
    [v initView:ary];

}
在view.h文件中:

#import <UIKit/UIKit.h>
#import "ViewController.h"

@class ViewController;

@interface view : UIView{
ViewController *viewController;


}
@property (nonatomic,retain)ViewController *viewController;


@end
#import <UIKit/UIKit.h>

@interface view : UIView

-(void)initView:(NSArray *)ary;
@end
日志值将显示以下内容:

2013-02-20 20:11:52.731 SampleProject[9414:f803] (
    7,
    5,
    3,
    2
)

您可以在ViewController中使用此代码实现

#import "view.h"

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSArray *ary = [NSArray arrayWithObjects:@"7",@"5",@"3",@"2", nil];

    view *v=[[view alloc] init];
    [v initView:ary];

}
在view.h文件中:

#import <UIKit/UIKit.h>
#import "ViewController.h"

@class ViewController;

@interface view : UIView{
ViewController *viewController;


}
@property (nonatomic,retain)ViewController *viewController;


@end
#import <UIKit/UIKit.h>

@interface view : UIView

-(void)initView:(NSArray *)ary;
@end
日志值将显示以下内容:

2013-02-20 20:11:52.731 SampleProject[9414:f803] (
    7,
    5,
    3,
    2
)

首先在视图上调用
init
方法,并在
initWithFrame
方法中检查从未调用的viewController。(但可能您正在使用默认帧从
init
方法内部调用
initWithFrame:

其次,在调用init方法后设置
viewcontroller
属性,因此
viewcontroller
initWithFrame
方法中仍然未初始化。 第三,您可能不需要将整个
viewcontroller
传递给视图来访问数组(这与MVC模式背道而驰),而只需要在UIView子类中创建一个实例变量并传递数组即可


然后您可以按照Dilip给出的答案进行操作,最好使用setter方法来设置数组。IMO.

首先要在视图上调用
init
方法,并在
initWithFrame
方法中检查从未调用的viewController。(但可能您正在使用默认帧从
init
方法内部调用
initWithFrame:

其次,在调用init方法后设置
viewcontroller
属性,因此
viewcontroller
initWithFrame
方法中仍然未初始化。 第三,您可能不需要将整个
viewcontroller
传递给视图来访问数组(这与MVC模式背道而驰),而只需要在UIView子类中创建一个实例变量并传递数组即可

然后您可以按照Dilip给出的答案进行操作,最好使用setter方法来设置数组。国际海事组织