我有一个自定义的UITableViewCell声明:
@interface ValveCell : UITableViewCell <UINavigationControllerDelegate,UIImagePickerControllerDelegate>
挂钩到以下方法的按钮:
- (void) addPicture {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
// I have tried every possible value for the presentation style
picker.modalPresentationStyle = UIModalPresentationNone;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
// controller is a @property I added to my custom class
// it is the UIViewController that is the data source/delegate for the table view
[self.controller presentViewController: picker animated: YES completion: nil];
}
支持委托方法:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissViewControllerAnimated:YES completion: nil];
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
if (chosenImage) {
[self.valve pushPhoto: chosenImage];}
}
我对此代码有两个问题(至少):
每次单击按钮时,我的记录都会收到以下警告:“快照未渲染的视图会导致空白快照。确保您的视图至少渲染一次屏幕更新后的快照或快照。“我尝试了各种演示样式。我不知道为什么会这样,或者我需要做些什么才能让它消失。
我不得不把控制器交给单元格(在我的tableView:cellForRowAtIndexPath:
方法中)。我知道走superView
链是不受欢迎的。有没有更好的方法让控制器打开它?或者打开不需要控制器的选择器的另一种方法?即使是self.tableView.delegate
之类的东西,如果是单元格,但有一个指向其tableview的后向指针,也会有效。
更新
#1回答@Jiten Parmar。对于#2,我找到了允许我使用代码的PPTopMostController pod:
[UIViewController topMostController]
就像魅力一样。
答案 0 :(得分:3)
"Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates."
答案是,当您的应用处于纵向模式并且您使用横向打开图像选择器时,它将在控制台中显示此警告,但无需担心,它对您的应用并不重要且没有崩溃问题会在那里。