不在视图控制器ios之间传递的数组

时间:2013-11-22 13:19:19

标签: ios objective-c arrays nsmutablearray nsarray

我想在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);
   }
}

4 个答案:

答案 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];