2013-09-16 35 views
2

Noob問題傢伙,但我不能得到它。來自另一個ViewController的調用方法

我有一個視圖控制器加載在一個單獨的視圖控制器。我希望能夠按下按鈕來調用父視圖控制器中的方法。所以這是我已經有了

父VC:

.h 
    -(void)callParentMethod; 



    .m 

    -(void)viewDidLoad{ 
    self.childVC.parentVC = self; 
    } 

-(void)callParentMethod{ 
NSLog(@"Hello?"); 
} 

孩子VC:

.h 

#import "TheParentViewController.h" 

@property (nonatomic, weak) TheParentViewController *parentVC; 


.m 

-(void)addThis{ 
[self.parentVC callParentMethod]; 
} 

我沒有得到任何錯誤,孩子VC方法addThis似乎調用該方法,但NSLog從不被調用。任何想法我做錯了什麼?

+0

http://stackoverflow.com/questions/8055052/call-a-parent-view-controller-through-a-navigationcontroller/8055480#8055480 – user523234

回答

2

我想是因爲weak參考parentVC版本。嘗試使用這種方法。

-(void)addThis{ 
NSLog(@"%@", self.parentVC); 
[self.parentVC callParentMethod]; 
} 
0
YourParentVC *parent = (YourParentVC*)[self presentingViewController]; 

parent.whatever = blah; 
0

我不太清楚你的應用是什麼,但你不應該讓父視圖控制器的引用。一個UIViewController已經有一個名爲parentViewController屬性,您可以通過以下方式使用:

[self.parentViewController methodToCall]; 

這將調用父視圖控制器上的方法。您可能需要轉換對象,以調用自定義方法

[(TheParentController *)self.parentViewController methodToCall]; 

這當然假定子視圖控制器的觀點是父視圖控制器視圖的子視圖。希望這有助於

0

檢查您的父視圖控制器是否已分配。

parentnvc = [ParentViewController alloc]initWithNibName:@"somenib" bundle:nil]; 

如果parentvc分配和初始化並調用該方法

0

可以在子視圖控制器創建一個屬性說,

@class ParentVC; 
@property(weak,nonatomic)ParentVC *parentVCreference; 

,並獲得父視圖控制器參考如下

self.parentVCreference=(ParentVC*)self.parentViewController; 

然後您可以調用ParentVC的任何公開方法,如下所示

[self.parentVCreference parentVCMethod]; 

注意:您需要在ChildVC實現文件中導入ParentVC的頭文件。

相關問題