问题描述
目标 c -> swift -> 返回目标 c
为了按此顺序传递 UIImage 数据,我的工作如下。
但是,我成功地将 UIImage 数据从目标 c 传递给了 swift,但未能将数据传递回目标 c。
原因是 swift 中的委托为零。
如果您告诉我下面代码中出现问题的地方,我将不胜感激。
Viewcontroller.h
#import <UIKit/UIKit.h>
@protocol imageDelegate <NSObject>
-(void)send: (UIImage *)sendImage;
@end
@interface ViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate,imageDelegate> {
UIImagePickerController *imagePickerController;
}
@property (nonatomic,weak) id<imageDelegate> delegate;
@end
Viewcontroller.m
#import "ViewController.h"
#import "imagePointer-Swift.h"
@interface ViewController ()<imageDelegate>
@property (weak,nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
}
- (IBAction)btnPhoto:(id)sender {
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:imagePickerController animated:YES completion:nil];
}
-(void)send: (UIImage *)sendImage {
_imageView.image = sendImage;
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediawithInfo:(NSDictionary *)info {
UIImage *pickedImage = info[UIImagePickerControllerOriginalImage];
if (pickedImage) {
NSLog(@"picked : %@",pickedImage);
}
[self dismissViewControllerAnimated:YES completion:nil];
ScViewController *scv = [[ScViewController alloc] initWithNibName:@"ScViewController" bundle:nil];
scv.img = pickedImage;
NSLog(@"scv.imgView : %@",scv.img);
[self presentViewController:scv animated:YES completion:nil];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
bridging-header.h
#import"ViewController.h"
ScViewController.swift
import UIKit
@objc class ScViewController: UIViewController {
@objc(img)
var img:UIImage!
var arrowImageView: UIImageView = UIImageView()
var delegate : imageDelegate!
@IBOutlet weak var imgView: UIImageView!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
imgView.image = img
}
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnSave(_ sender: Any) {
if delegate == nil{
print("delegate : nil") // I don't kNow why delegate is nil
}else{
delegate.send(imgView.image)
}
self.dismiss(animated: true,completion: nil)
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)