如何在iphone中将数组从一个视图传递到另一个视图

时间:2013-03-19 16:25:47

标签: iphone ios

我是手机编程的新手。我已经将一些数据存储在数组中,我希望将该数组数据从一个视图传递到另一个视图。我尝试了但是它没有工作。可以告诉我什么是错误在那。

#进口 “firstviewcontroller.h”

 @property(nonatomic,retain)NSMutableArray *tapCollection;
 @property(nonatomic,retain)NSMutableArray *imageCollection;

#进口 “firstviewcontroller.m”

   @synthesize imageCollection,tapCollection;
    -(void)viewdidload
    {
    self.tapCollection = [[NSMutableArray alloc] init];
    self.imageCollection = [[NSMutableArray alloc] init];
    }
    - (void)insertNewObject:(id)sender
    {

        secondviewcontroller*r= [[secondviewcontrolleralloc] initWithNibName:@"secondviewcontroller" bundle:nil];
        self.navigationController.navigationBar.tintColor=[UIColor blackColor];
         r.imageCollection1 =imageCollection;
             r.tapCollection1 =tapCollection;
        [self.navigationController pushViewController:r animated:YES];

    }

实际上我在数组中存储的数据是图像和按钮标记值。在控制台中显示图像和按钮标记值我存储在数组中

2013-03-19 21:54:03.374 Taukyy[290:1c103] (
    0,
    "<UIImage: 0x9cd59e0>",
    1,
    "<UIImage: 0x9cd6220>",
    2,
    "<UIImage: 0x9cd6b70>"
)

导入 “secondviewcontroller.h”

@property(nonatomic,retain)NSMutableArray *tapCollection1;
@property(nonatomic,retain)NSMutableArray *imageCollection1;

导入 “secondviewcontroller.m”

@synthesize tapCollection1,imageCollection1;
- (void)viewDidLoad
{
    imageCollection1 = [[NSMutableArray alloc] init];
   tapCollection1 = [[NSMutableArray alloc] init];
   NSLog(@"%@",tapCollection1);
   NSLog(@"%@",imageCollection1);
}

但是这里的值没有显示。它显示如下

2013-03-19 21:29:16.379 Taukyy[594:1c103] (
)
2013-03-19 21:29:16.380 Taukyy[594:1c103] (
)
2013-03-19 21:29:16.381 Taukyy[594:1c103] (
)

请允许任何机构告诉我这段代码中的错误 谢谢 阿斯拉姆

4 个答案:

答案 0 :(得分:3)

viewDidLoad's

中删除secondviewcontroller.m数组分配

tapCollection1&amp; imageCollection1retain个属性。因此,retain分配的对象。

你的 secondviewcontroller.h 应该是,

@property(nonatomic,retain)NSMutableArray *tapCollection1;
@property(nonatomic,retain)NSMutableArray *imageCollection1;

- (void)viewDidLoad
{
  //remove the allocation codes
}

您可以将其记录在 firstviewcontroller.m 中,例如

 - (void)insertNewObject:(id)sender
    {

         secondviewcontroller*r= [[secondviewcontrolleralloc] initWithNibName:@"secondviewcontroller" bundle:nil];
         self.navigationController.navigationBar.tintColor=[UIColor blackColor];
         r.imageCollection1 =imageCollection;
         r.tapCollection1 =tapCollection;
         NSLog(@"%@",r.imageCollection1);
         NSLog(@"%@",r.tapCollection1);
        [self.navigationController pushViewController:r animated:YES];

    }

答案 1 :(得分:3)

不要再次分配/初始化阵列。你在准备segue时设置它们。

@synthesize tapCollection1,imageCollection1;
- (void)viewDidLoad
{
   //imageCollection1 = [[NSMutableArray alloc] init];
   //tapCollection1 = [[NSMutableArray alloc] init];
   NSLog(@"%@",tapCollection1);
   NSLog(@"%@",imageCollection1);
}

答案 2 :(得分:0)

不要init mutableArrays viewDidLoad中的SecondViewController, 而是在init

SecondViewController方法中进行
 -(id)initWithNibName //this method
  {
     //create object

      self.imageCollection1 = [NSMutableArray alloc] init];
      self.tapCollection1 = [NSMutableArray alloc] init];

   }

您现在可以获得正确的值..

答案 3 :(得分:0)

为什么要分配先前分配的数组。

删除

imageCollection1 = [[NSMutableArray alloc] init];
tapCollection1 = [[NSMutableArray alloc] init];