Ios 在Objective-C中将阵列从局部视图控制器访问到主视图控制器

Ios 在Objective-C中将阵列从局部视图控制器访问到主视图控制器,ios,objective-c,Ios,Objective C,因此,我已经在详细视图控制器、分配数据等中创建了NSMutablearray,但我只是想知道如何在主视图控制器中访问它?这是我第一次使用表视图等,所以我对它一无所知 谢谢您需要使用指定的初始值设定项将NSMutableArray传递给Viewcontroller 在ViewController.m和.h中创建指定的初始化器 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil WithAr

因此,我已经在详细视图控制器、分配数据等中创建了NSMutablearray,但我只是想知道如何在主视图控制器中访问它?这是我第一次使用表视图等,所以我对它一无所知


谢谢

您需要使用指定的初始值设定项将NSMutableArray传递给Viewcontroller

在ViewController.m和.h中创建指定的初始化器

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil WithArr:(NSMutableArray*)arr
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
    self.arrTaskList=arr;
}
return self;
}
与创建viewcontroller对象时的DetailViewController类似

ViewController* vc=[ViewController alloc]initWithNibName:@"ViewController" bundle:@"" Arrr:self.arr];

通常模式是相反的,您在主视图控制器中创建对象,并将指向特定项的指针从此VC传递到详细VC。然而,这只是最常见的模式,如果你认为合适,你所做的可能是正确的

通常,细节VC通过委托将数据返回给主VC。这里有数百个关于如何做的教程和问题,我会复制粘贴一个教程。但简而言之,这些步骤是:

  • 您创建一个自定义协议,并声明一个方法,细节VC将调用该方法将任何信息传递给主VC
  • 您的主VC实现或遵守该协议
  • 您的Detail VC有一个类型为
    id
    的实例变量,它指向委托
  • 主VC将细节VC中的委托指针设置为self(指向自身,例如主VC)
  • 这听起来很复杂,而且确实有点复杂,但是一旦你得到了这个概念,你就会发现它在你几乎所有的项目中都很有用


    另一种可能是使用通知让主VC知道细节VC发生了变化。

    有一些方法可以做到这一点

    其中之一是: 将
    NSMutableArray
    设置为视图控制器上的属性。然后,在局部视图控制器上为视图控制器本身设置属性

    视图控制器界面

    @property (nonatomic, strong) NSMutableArray *mutableArray;
    
    @property (nonatomic, strong) ViewController *viewController;
    
    详细视图控制器界面

    @property (nonatomic, strong) NSMutableArray *mutableArray;
    
    @property (nonatomic, strong) ViewController *viewController;
    
    然后,在ViewController上,在按下DetailViewController之前,将其
    ViewController
    属性设置为
    self

    detailViewController.viewController = self;
    
    然后,在DetailViewController上,将
    viewController.mutableArray
    属性设置为刚创建的新数组

    您可以在
    视图将消失
    方法上执行此操作

    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
    
        self.viewController.mutableArray = _myNewlyCreatedMutableArray;
    }
    

    因此,当您回到ViewController时,只需访问
    self.mutableArray
    ,您就可以获得在详细视图上创建的数组。

    如果您对表视图一无所知,如您所说,那么请阅读苹果的“iOS表视图编程指南”。这会给你一个好的开始。你一定要看这个pdf,它一定会帮助你启动你的ios开发,它对你的问题有一个答案,我会查出来的