2

我想从我的目标 C uiviewcontroller 推送 swift UIViewController 并等待该视图控制器发回数据。我该怎么做。

我尝试在 swift 中使用协议/委托,但它会引发错误,因为它在 objc .h 文件中不可用,即使我正在导入“Pass-swift.h”桥接头文件。

我很好奇我是否可以使用完成块,如果是,那么如何?或任何其他方法?

//Parentviewcontroller.m file


- (void)sendNextbutton:(id)sender{

UIViewController *vc = [[SecurityQuestionViewController alloc] init];

[self.navigationController pushViewController:vc animated:YES];

// I want below signup  function to calll after getting data back from vc viewcontoller
[self singupWithSecurityQuestion];}

// .h 文件

#import  "PassSDK-Swift.h"


@interface ParentViewController : UIViewController <MyProtocol>

@end

//SecurityQuestionViewController.swift

 @objc protocol MyProtocol {
   func setResultofSecurityQuestion(valueSent: [NSDictionary])
 }

@objc public class SecurityQuestionViewController: UIViewController
{    
  var delegate: MyProtocol?

@objc func didTapSubmitButton(sender: UIButton){
    let data: [NSDictionary] = getQuesDictionary()
    print(data)
    delegate?.setResultofSecurityQuestion(valueSent: data)
    navigationController?.popViewController(animated: true)
    dismiss(animated: true, completion: nil)
  }

}

//我应该将数据返回给 ParentViewController,它应该等待 swift 视图控制器发回数据,然后它应该转到下一个函数/方法 - singupWithSecurityQuestion。

4

1 回答 1

0

所以答案是使用

       @objc protocol MyProtocol: class {
  func setResultofSecurityQuestion(valueSent: [NSDictionary])
          }

和无处不在的@objc

于 2019-10-14T01:46:04.667 回答