我想在viewcontrollers之间传递一个数组。从ViewControllerA到ViewControllerB但是我的结果出来了。我已经尝试了几乎所有的东西。
当我在ViewControllerA中记录destViewController.textArraysParsed时,我看到了正确的结果。
Array (
Blake
)
但是当我在ViewControllerB中尝试NSLog数组时,数组是否为Null?我尝试了viewDidLoad,viewWillAppear和viewWillLoad方法来尝试NSLog数组,但它没有了。
如何使用我在ViewControllerA中创建的数组,以便我可以在ViewControllerB中访问该数组。
ViewControllerA方法
ViewControllerA.h
#import <UIKit/UIKit.h>
#import "BSKeyboardControls.h"
#import "RegistrationBaseViewController.h"
@interface Register1ViewController : RegistrationBaseViewController <UITextFieldDelegate, UITextViewDelegate, BSKeyboardControlsDelegate, UIPickerViewDelegate, UIActionSheetDelegate, UIPickerViewDataSource> {
NSMutableArray *textArrays;
}
@property (nonatomic, retain) NSMutableArray *textArrays;
@end
ViewControllerA.m
textArrays =[[NSMutableArray alloc]initWithCapacity:10];
NSString *arrayString = [NSString stringWithFormat:@"%@", self.firstNameTxtFld.text];
[textArrays addObject: arrayString];
NSLog(@"Array %@", textArrays);
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"segRegister2"]) {
Register2ViewController *destViewController = segue.destinationViewController;
destViewController.textArraysParsed = textArrays;
NSLog(@"destViewController Array %@", destViewController.textArraysParsed);
}
}
答案 0 :(得分:2)
iOS 7 - ARC
这里既没有“强”也没有“保留”。 (在这种情况下,我让它“强大”)。
您必须先将其初始化。它奏效了。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.destinationViewController isKindOfClass:[Simulate class]]) {
if ([segue.identifier isEqualToString:@"SegueName"]) {
ViewController *vc = (ViewController *)segue.destinationViewController;
vc.array = [[NSMutableArray alloc] init];
vc.array insertObject:@"Obj" atIndex:0];
}
}
}
答案 1 :(得分:1)
只需修改属性方法: -
@property (nonatomic, strong)NSMutableArray *textArrays;
答案 2 :(得分:0)
我所要做的就是改变强势以保留。
答案 3 :(得分:-1)
这就是我通常在视图控制器之间传递数组的方式。我使用NSUserDefaults,除非我错过了解你的问题。
在ViewController A中
NSMutableArray *temp2MutableArray = [[NSMutableArray alloc] initWithObjects:@"1", @"2", nil];
[[NSUserDefaults standardUserDefaults] setObject:temp2MutableArray forKey:@"mySampleArray"];
[[NSUserDefaults standardUserDefaults] synchronize];
在ViewController B中
NSArray *tempArray2 = [[NSUserDefaults standardUserDefaults] objectForKey:@"mySampleArray"];
NSMutableArray *temp2MutableArray = [[NSMutableArray alloc] initWithArray:tempArray2];