2013-07-11 113 views
0

在我的應用程序中,我試圖將數據從父視圖傳遞給子視圖。但是,當我運行應用程序時,委託方法未被調用。 這裏是我是如何實現的自定義委託代碼: parent.h將數據從父項傳遞給子項

@protocol SLBWallViewControllerDelegate <NSObject> 

- (void) pictureToBeUploaded:(id)picture; 

@end 

@interface SLBWallViewController : UIViewController <UIActionSheetDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate> 
- (IBAction)createPotButtonPressed:(id)sender; 

@property (weak, nonatomic) id <SLBWallViewControllerDelegate> delegate; 
@end 

parent.m

[self.delegate pictureToBeUploaded:info[UIImagePickerControllerEditedImage]];//i'm taking the pic from a uiimagepicker 

child.h

@interface SLBPostViewController : UIViewController <SLBWallViewControllerDelegate> 
@property (weak, nonatomic) IBOutlet UIImageView *picture; 
@end 

child.m

#pragma mark - Wall View Controller Delegate 
- (void)pictureToBeUploaded:(id)picture{ 
    self.picture.image = picture; 
} 

有什麼不對或缺失?

+0

也許'委託'是'無'在那一點。你在哪裏初始化和分配? – Alladinian

+0

我沒有初始化委託,我在哪裏做? – HusseinB

+1

好吧,既然你想發送一條消息到'self.delegate',這意味着你應該在某個時刻,在那之前,有'self.delegate = // ..一個Child實例'之類的東西。 – Alladinian

回答

1

好了,問題很可能(編輯:在評論確認)是self.delegatenil在這一點上。所以你發信息給nil,當然沒有任何反應。您必須做的是確保在嘗試發送消息之前將Child實例分配給delegate屬性。像這樣的例如:

//... 
self.delegate = //.. a 'Child' instance 

//... 
[self.delegate pictureToBeUploaded:info[UIImagePickerControllerEditedImage]]; 
0

//(1)在h文件兒童創建一個屬性

@屬性(非原子,強)的UIImage * someImage;

//(2)在.m文件兒童重寫屬性

- (無效)setSomeImage:(的UIImage *)someImage {

_someImage=someImage; 
self.picture.image = self.someImage; 

}

//(3)在.m文件的父項中將圖像設置爲兒童的'someImage'屬性

childsObject .someImage = UIImagePickerControllerEditedImage;

相關問題