2014-03-27 86 views
0

所以我創建了我的NSMutablearray在詳細視圖控制器中,分配了數據等,但我只是想知道如何在主視圖控制器中訪問它?這是我第一次使用表格視圖等,所以我對此非常無知。從詳細視圖控制器訪問數組到主視圖控制器Objective-C

感謝

+1

如果您對錶格視圖非常無知,正如您所說,那麼請閱讀Apple的「iOS視圖編程指南」。這會給你一個好的開始。 – rdelmar

+0

你一定要通過這個pdf https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/RoadMapiOS.pdf它肯定會幫助你啓動你的ios開發,它也有你的問題的答案 – iamyogish

+0

謝謝我會檢查出來 – Javanoob33

回答

0

有一些方法可以做到這一點。

其中之一是: 您將NSMutableArray設置爲視圖控制器上的屬性。然後,在您的詳細視圖控制器上爲視圖控制器本身設置一個屬性。

視圖控制器接口

@property (nonatomic, strong) NSMutableArray *mutableArray; 

DetailViewController接口

@property (nonatomic, strong) ViewController *viewController; 

然後,在視圖控制器,推DetailViewController之前,其viewController屬性設置爲self

detailViewController.viewController = self; 

然後,在DetailViewController上,將viewController.mutableArray屬性設置爲剛剛創建的新數組。

你可以在viewWillDisappear方法上做到這一點。

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    self.viewController.mutableArray = _myNewlyCreatedMutableArray; 
} 

所以,當你回來到ViewController,只是獲得self.mutableArray,你會得到你的詳細視圖創建數組。

1

你需要使用指定的初始值設定的NSMutableArray傳遞給視圖控制器。

在ViewController .m和delcare中創建指定的initiliazer .h。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil WithArr:(NSMutableArray*)arr 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) 
{ 
    self.arrTaskList=arr; 
} 
return self; 
} 

像DetailViewController當創建的ViewController對象

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

一般圖案相反,可以創建在主視圖控制器對象和指針從這個VC到傳遞給一個特定項細節VC。然而,這只是最常見的模式,如果你認爲它合適,你所做的事情可能是正確的。

通常,細節VC通過代表向主VC返回數據。這裏有數百個關於如何做的教程和問題,我會複製粘貼教程。但在短期,步驟是:

  1. 您創建一個自定義的協議,並宣佈了詳細的VC會打電話來的任何信息傳遞給主VC
  2. 您的主VC的方法實現或符合該協議
  3. 您詳細的VC有型id<yourProtocol>指向委託
  4. 大師VC的實例變量設置的詳細信息VC委託指向自己(本身,例如主VC)

聽起來很複雜,它確實有一點點,但一旦你瞭解了這個概念,你會發現它在幾乎所有的項目中都很有用。

另一種可能性是使用通知讓Master VC知道Detail VC中的某些內容發生了變化。

相關問題