Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.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
Iphone 将阵列发送到viewcontroller iOS xcode_Iphone_Ios_Xcode_Xcode4.5 - Fatal编程技术网

Iphone 将阵列发送到viewcontroller iOS xcode

Iphone 将阵列发送到viewcontroller iOS xcode,iphone,ios,xcode,xcode4.5,Iphone,Ios,Xcode,Xcode4.5,我有两个视图控制器: 索引 第二 在索引中,我有两个文本字段和按钮 我填充这个文本字段并按下“下一步按钮”进入第二个视图,我需要使用数组“显示”这两个文本字段(稍后我将发送JSON数据) 我试过这个: 将第二类中的@属性声明为textArray。然后,当从索引推到第二个时,您需要设置此属性 在第二个.h文件中 @property(nonatomic, strong) NSArray *textArray; 在Index.m文件中 Second *aSecond = [[Second alloc

我有两个视图控制器:

索引 第二 在索引中,我有两个文本字段和按钮

我填充这个文本字段并按下“下一步按钮”进入第二个视图,我需要使用数组“显示”这两个文本字段(稍后我将发送JSON数据)

我试过这个: 将第二类中的@属性声明为textArray。然后,当从索引推到第二个时,您需要设置此属性

在第二个.h文件中

@property(nonatomic, strong) NSArray *textArray;
在Index.m文件中

Second *aSecond = [[Second alloc] init];
aSecond.textArray = @[textField1.text, textField2.text];
//编写代码从索引推送到第二个索引 现在在第二个类中,您可以将其用作aSecond.textArray[0]和aSecond.textArray[1]

但若我切换页面(单击下一步),数组已为空

对于切换页面,我使用以下内容:

SecondPage *SecondPage = [self.storyboard instantiateInitialViewController];
    SecondPage = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondPage"];
    [self SecondPage animated:YES];
我怎样才能最好地实现?请帮忙!顺致敬意, 伊万

1) 变量名和类名相同 2) 我不确定XCode是否接受了您编写的[self SecondPage动画:是]

最后,您是否分配了阵列

编辑

哦,还有:

aSecond.textArray = @[textField1.text, textField2.text];
你应该写:

[aSecond.textArray addObject:textField1.text]; // using NSMutableArray

如果你通过故事板使用它,你需要这样做

SecondPage *aSecondPage = [self.storyboard instantiateInitialViewController];
aSecondPage = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondPage"];
aSecond.textArray = @[textField1.text, textField2.text];
[self aSecondPage animated:YES];

当您执行此操作时,
aSecond=[[Second alloc]init]然后执行
aSecondPage=[self.storyboard实例化eviewcontrollerwhiteIdentifier:@“SecondPage”],它正在创建一个单独的实例,而不是相同的实例。您在第一个实例上设置了此数组,并希望在第二个实例上设置它。

为第二个视图控制器编写您自己指定的初始值设定项,如

-(id)initWithTextArray:(NSArray *)_textarray; -(id)initWithTextArray:(NSArray*)\u textarray; 现在alloc init是第二个视图控制器

Second *aSecond = [[Second alloc] initWithTextArray:array]; Second*aSecond=[[Second alloc]initWithTextArray:array];
在第二个视图控制器的viewDidLoad方法中,使用textarray填充视图

有很多方法可以将值从一个控制器转移到另一个控制器,但对于您来说,我认为这将是有史以来最简单的方法。使用
NSUserDefaults

第一个简单的方法

在第一控制器中

[[NSUserDefaults standardUserDefaults] setObject:@[textField1.text, textField2.text] forKey:@"listOfData"];
在第二控制器中

NSArray *array = [[NSUserDefaults standardUserDefaults]objectForKey:@"listOfData"];
第二个简单的方法是

DetailVC *detailVC = [self.storyboard instantiateInitialViewController];
detailVC = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailVC"];
detailVC.textArray = @[textField1.text, textField2.text]; 

嘿,你试过“全局变量和数组与委托方法”。在你移除之前,它不会释放。它将是全局的,直到应用程序实例

在代理类中

.h文件

NSMutableArray *obj;
.m文件

Synthesize & Alloc - init array.
那么

在ViewContoller.m文件中

AppDelegate *app;
app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
那么

在第二个.m文件中,您可以使用它

NSLog(@" Data : %@", app.obj);
请记住,无论何时需要此数组,都应该初始化“Delegate”类的“app”对象

它将在全球范围内工作和存储数据


谢谢。

我可以想出两种方法:

1) 或者在第二次中添加一个方法,然后在初始化后调用它并将该值作为参数传递给一个方法。因此,在第二个.m
-(void)push:(NSArray*)数组{}
中,在NSArray名称前用“&”传递它

2) 首先创建一个getter。由于它是NS,您必须首先在中使用assign so。h您放置
@property(非原子,assign)NSArray*array1
在First.m中添加
@synthesis数组1
并称之为
self.array1=[“t”、“e”、“s”、“t]
然后在Second中传递对第一个类的引用,在Second.m中创建一个变量,并获取它
NSArray*array1=first.array1


您可以编写自己的getter,但这并不合理。

永远不要将类名作为实例变量名。它可能会导致很多问题。你分配了你的数组吗?它可能会工作,但你这样做是错误的。它只强制执行坏习惯和意大利面规则。访问您的代码的人应该只通过查找第二个
UIViewController
init方法就知道,为了让它工作,它应该接收一个
NSArray
@pradeepa的答案比这要好得多。@JackyBoy,当pradeepa将
secondPage
实例化为
secondPage=[self.storyboard instanceeviewcontrollerwhithidentifier:@“secondPage”]时,你认为他的答案会起什么作用。您不能使用该代码。我认为您应该解释如何使用他正在使用的
secondPage=[self.storyboard instanceeviewcontrollerwhiteIdentifier:@“secondPage]”的相关代码来完成此操作。那样的话你会怎么办?
[app.obj addObject: text1.text];
NSLog(@" Data : %@", app.obj);