2015-11-25 45 views
0

這些是我在子視圖控制器中的委託方法。這是如何設置委託方法的工作?

@protocol assignNames<NSObject> 

-(void)setFirstName:(NSString*)firstName; 
-(void)setLastName:(NSString*)lastName; 

@end` 

在我的父視圖控制器中,我收到文本字段中的第一個名稱。 這是我的代碼的一部分。

VIEWCONTROLLER.M

\\ FirstName is the name of my textField string 


viewcontroller2 *viewc = [[viewcontroller2 alloc]init]; 
viewc2 = [segue destinationViewController]; 
viewc2.FNT = FirstName.text; 

[viewc2 setDelegate:self ]; \\ Here is my question 

所以,當我把這個方法,它實際上是指?因爲如果我將它包含在我的代碼中似乎什麼都不會發生。

+1

'viewcontroller2 * viewc = [[viewcontroller2 alloc] init]; viewc2 = [segue destinationViewController];'應該更改爲'viewcontroller2 * viewc = [segue destinationViewController];' – Wain

+0

是不是第一行是不需要的。 – ShahiM

回答

1

childviewController中的@protocol塊是childviewController的代表應實現的方法列表。當您從viewController.m撥打[viewc2 setDelegate:self ]時,您的viewController成爲您的childViewController的代表。

那麼所有這些步驟是做什麼的?那麼,首先,因爲家長VC訂閱assignNames委託,它將實現這兩​​種方法。其次,兒童VC可以調用協議的父VC方法,像這樣:

[self.delegate setFirstName:@"Derp"]; 
// we are in the child VC and the delegate would be parent VC 

不管怎麼說,曾經有一段時間,當這一切把我難倒了,所以我知道是怎麼回事。我建議你通過一些教程來獲得一些東西,比如this one here

+0

謝謝。這是一個有用的鏈接。 – user5553647