Ios 我们如何访问添加在不同UIView类中的viewcontroller类中的数组的值。。?
viewcontroller.m具有以下代码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;
- (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方法来设置数组。国际海事组织