如何从objective-c类推送一个快速视图控制器并将数据传回并继续objective-c类中的下一个过程
Posted
技术标签:
【中文标题】如何从objective-c类推送一个快速视图控制器并将数据传回并继续objective-c类中的下一个过程【英文标题】:how to push a swift view controller from objective-c class and pass data back and continue the next process in objective c class 【发布时间】:2019-09-29 04:06:10 【问题描述】:我想从我的目标 C uiviewcontroller 推送 swift UIViewController 并等待该 viewcontroller 发回数据。我该怎么做。
我尝试在 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 view controller 发回数据,然后它应该转到下一个函数/方法 - singupWithSecurityQuestion。
【问题讨论】:
根据经验,尝试在任何地方添加@objc
:在func
之前、var delegate
之前——看看是否有帮助。
【参考方案1】:
所以答案是使用
@objc protocol MyProtocol: class
func setResultofSecurityQuestion(valueSent: [NSDictionary])
到处都是@objc
【讨论】:
以上是关于如何从objective-c类推送一个快速视图控制器并将数据传回并继续objective-c类中的下一个过程的主要内容,如果未能解决你的问题,请参考以下文章
如何从 NSObject 类获取导航控制器并在 ios 中推送视图控制器
IOS / Objective-C / Storyboard:推送视图控制器的后退按钮未激活
SideMenu 警告:尝试快速从其 navigationController == nil 推送视图控制器