iOS Swift 如何告诉 UIView 控制器我们通过 NSURLProtocol 对象接收到信息

     2023-03-12     130

关键词:

【中文标题】iOS Swift 如何告诉 UIView 控制器我们通过 NSURLProtocol 对象接收到信息【英文标题】:iOS Swift how to tell the UIView Controller that we received information via a NSURLProtocol object 【发布时间】:2015-10-01 17:18:59 【问题描述】:

我创建了一个实现 NSURLProtocol 的类,它将告诉我有关 UIWebView 请求的信息。我希望告诉 UI 我们点击了感兴趣的 URL 并在 ViewController 上运行代码以访问 WebView。

我相信协议是解决方案,但我似乎无法解决如何让它发挥作用。任何建议和代码示例将不胜感激。这是我到目前为止所尝试的。

UI 视图 Controller.swift

class WebViewController: UIViewController,WebAuthDelegate 

        @IBOutlet weak var webView: UIWebView!

        override func viewDidLoad() 
            super.viewDidLoad()

                 let url = NSURL(string: "http://example.com")
            let request = NSURLRequest(URL: url!)
            webView.loadRequest(request)
        

        override func didReceiveMemoryWarning() 
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        

        @IBAction func onBackClick(sender: AnyObject) 
            if(webView.canGoBack)
                webView.goBack()
            
        
        @IBAction func onFwdClick(sender: AnyObject) 
            if(webView.canGoForward)
                webView.goForward()
            
        

        @IBAction func onRefresh(sender: AnyObject) 
            webView.reload()
        
        func getUserToken() 
            print("RUN THIS AFTER I HIT URL IN URL PROTOCAL CLASS")
        
    

这是我的 NSURLProtocol 实现的类以及尝试的协议(如果它是错误的方法,请告诉我)

class CUrlProtocol: NSURLProtocol 

  //let delegate: WebAuthDelegate? = nil
    override class func canInitWithRequest(request: NSURLRequest) -> Bool 

        print("URL = \(request.URL!.absoluteString)")
        if request.URL!.absoluteString == "http://api-dev.site.com/token" 
           //Tell the UI That we now have the info and we can access the UIWebView Object
        

        return false
    



protocol WebAuthDelegate
    func getUserToken()

【问题讨论】:

【参考方案1】:

实现此目的的最佳方法可能是在匹配 URL 时从您的协议中发布 NSNotification

CUrlProtocol,当您找到匹配项时(通知名称可以选择):

let notification:NSNotification = NSNotification(name: "MyURLMatchedNotification", object: nil)
NSNotificationCenter.defaultCenter().postNotification(notification)

在你的WebViewController:

// During init (or viewDidAppear, if you only want to do it while its on screen)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "getUserToken", name: "MyURLMatchedNotification", object: nil)

...

// During dealloc (or viewWillDisappear)
NSNotificationCenter.defaultCenter().removeObserver(self, name: "MyURLMatchedNotification", object: nil)

如果您需要来自该请求的信息,您也可以在通知中传递一些信息。只需在创建通知时设置 object 参数并将 getUserToken 更改为接受类型为 NSNotification 的单个参数并访问其 object 属性。

【讨论】:

Swift - 如何将视图控制器的引用传递给子 UIView 类?

】Swift-如何将视图控制器的引用传递给子UIView类?【英文标题】:Swift-Howtopassaviewcontroller\'sreferencetoasubUIViewclass?【发布时间】:2014-07-0609:00:51【问题描述】:我里面有一个UIViewController和一个UIView。当我尝试在UIView中添加警报时... 查看详情

如何使用动态视图 iOS Swift 处理导航?

...UIViewController中打开。但是如何使用该按钮创建和连接新控制器?这是我的代 查看详情

swift : UIView 的平滑翻译与 iOS 控制面板完全一样(跟随用户手指,使用平移)

】swift:UIView的平滑翻译与iOS控制面板完全一样(跟随用户手指,使用平移)【英文标题】:swift:smoothingtranslationofUIViewexactlyasiOScontrolpanel(followinguserfinger,usingpan)【发布时间】:2019-05-1021:09:25【问题描述】:我想用手指从下到上移... 查看详情

如何在 Swift 的 UIView/Utility 类中获取导航栏

...我需要在自定义视图类中获取导航栏。我可以在我的视图控制器类中获得导航栏的高度。如何获取UIView/Utiity通用类中的导航栏高度?.我只有一个视图控制器,并在该类中添加了导航控制器。我想在任何 查看详情

如何使用 swift 清除和重绘 UIView 的内容(存在于视图控制器中)?

】如何使用swift清除和重绘UIView的内容(存在于视图控制器中)?【英文标题】:HowtoclearandredrawcontentsofaUIView(presentinsideaviewcontroller)withswift?【发布时间】:2017-01-0506:57:46【问题描述】:我在ViewController中有一个UIView,我在其中根... 查看详情

如何将数据传递到 UIView 侧的嵌入式 UIViewController - Swift 5

...【发布时间】:2019-09-2707:53:06【问题描述】:有一个视图控制器B。因此,在UIView中的viewControllerA中嵌入了B作为子视图控制器。现在,需要在子视图控制器B中调用api作为子视图添加。 查看详情

如何以编程方式将自定义 uiview 添加到视图控制器 SWIFT

】如何以编程方式将自定义uiview添加到视图控制器SWIFT【英文标题】:HowtoaddacustomuiviewtoaviewcontrollerprogrammaticallySWIFT【发布时间】:2015-07-2000:00:01【问题描述】:我正在尝试以编程方式将自定义视图添加到我的视图控制器。我使... 查看详情

如何将 xib 加载到 UIView 子类、Swift、iOS

】如何将xib加载到UIView子类、Swift、iOS【英文标题】:HowtoloadxibtoUIViewsubclass,Swift,iOS【发布时间】:2015-03-1515:35:06【问题描述】:我有一个名为ContentView的.xib文件,我想将其用作名为ContentView的类的视图,但我似乎无法加载它。cla... 查看详情

如何使用 segue 从 UIView 导航到 UIView 控制器?

】如何使用segue从UIView导航到UIView控制器?【英文标题】:HowtonavigatefromUIViewtoaUIViewControllerusingsegues?【发布时间】:2017-12-3101:39:32【问题描述】:目标:使用上一个视图控制器“登录页面”中的“继续此处”按钮显示视图控制器-... 查看详情

Swift,如何将现有的 uiview 转换为 uiscrollview?

...字段。所以我喜欢启用垂直滚动。我以为我只需要将视图控制器的类从UIView更改为UIScrollView:除了更改类之外,我还应该做什么才能启 查看详情

IOS Swift3如何随机删除自定义UIView

】IOSSwift3如何随机删除自定义UIView【英文标题】:IOSSwift3howtoRemoveCustomUIViewrandomly【发布时间】:2017-05-2605:18:06【问题描述】:我正在swift3中构建一个iOS应用程序,我正在创建动态UIViews。我需要随机删除自定义视图。请帮助我,... 查看详情

如何在 ios Swift 的 UIView 中左右设置阴影?

】如何在iosSwift的UIView中左右设置阴影?【英文标题】:HowtosetshadowatleftrightandbottominUIViewiniosSwift?【发布时间】:2017-10-0609:01:17【问题描述】:我希望在视图的左侧、右侧和底部都有阴影。但Swift3阴影偏移仅提供高度或宽度。我... 查看详情

swift - 在UIScrollView上从xib添加UIView后如何更新约束?

...ft?【发布时间】:2017-08-2115:14:06【问题描述】:我在视图控制器中有一个UIViewScroll(背景颜色为蓝色)。我需要来自Xib的UIView(背景颜色为白色)。Xib视图有一个带有约束的U 查看详情

如何在 iOS Swift 中将不同的角半径应用于 UIView 的不同角?

】如何在iOSSwift中将不同的角半径应用于UIView的不同角?【英文标题】:HowtoapplydifferentcornerradiustodifferentcornersofUIViewiniOSSwift?【发布时间】:2018-05-1408:19:44【问题描述】:我想使用swift对iOS中UIView的不同角应用不同的角半径值。这... 查看详情

如何在 Swift 4 中向 UIView 添加子视图?

】如何在Swift4中向UIView添加子视图?【英文标题】:HowaddsubviewtoUIViewinSwift4?【发布时间】:2017-09-2811:37:54【问题描述】:需要在Swift3和Swift4(iOS10+)中工作@IBOutletweakvarviewBody:UIView!@objcvarloadIndicator=UIActivityIndicatorView()@objcletloadBody=UIVi 查看详情

如何使用弹出视图控制器更新 UIView 上的属性?

】如何使用弹出视图控制器更新UIView上的属性?【英文标题】:HowdoIupdateapropertyonUIView,usingapop-outviewcontroller?【发布时间】:2015-03-1215:40:06【问题描述】:我正在尝试使用Swift中的核心图形将笔画宽度弹出菜单添加到一个简单的绘... 查看详情

如何在 iOS Swift 中制作加载动画?

】如何在iOSSwift中制作加载动画?【英文标题】:HowtomakeloadinganimationiniOSSwift?【发布时间】:2020-06-0505:49:26【问题描述】:嗨,我想用3UIView制作动画。主要问题是我无法通过从layer中删除动画来停止动画。代码如下:classHTAnimatedT... 查看详情

如何将xib视图添加到视图控制器swift 3

】如何将xib视图添加到视图控制器swift3【英文标题】:Howtoaddxibviewtoviewcontrollerswift3【发布时间】:2018-01-0523:30:53【问题描述】:我正在尝试将此XIB视图添加到我的视图控制器:importUIKitclassTranslateView:UIView@IBOutletvarTranslateView:UIView... 查看详情