首页 > 下面程式如何写成一个 CLASS 或 SOMETHING

下面程式如何写成一个 CLASS 或 SOMETHING

图片中的A 跟 B 很明显的是相同的程式,只是代不同的变量
但是因为有卡到 UIWebBiewDelegate 的关系,小妹我没有办法把 它写成class 因为没有物件,所以activeIndicator.startAnimating(), 会失效 或是webViewDidStarload 之类的东西会失效效

请问各位大大这个如何解

20151224 (今天我生日,窃笑)

具体的说
A 部份 跟 B 部份的 程式几乎是相同的
只是带入不同的参数。

可是如果要写成一个func 或 class 就会因为 物件没有带入 而造成程序无法正确执行

举例:

如果我写成

class XXX{

    func AA(webView:UIWebView!, Act:UIActivityIndicatorView, URL:NSString){
         我的程序

    }

    func webViewDidStartLOAD(webView:UIWebView){
      player()
    }

    func webViewFinishLoad(webView:UIWebView){
         stop()
    }

   func play(){
     XXXXX
    }

   func stop(){
    XXXX

   }
}

以上是我之前写的,但遇到的问题
一,我不知道 这个class 要怎么被载入 例如 php 有 $X=new XXX()

二、上次程序最大的错就是因为 在 ViewController 前有带了一个 UIWebViewDelgate 而我写的class 并没有带 webViewdellgate , 所以会造成 webViewDidStartLoad 跟 webViewDidFinishLoad 这两个fuch 无法正常的被触发

20151225

首先感谢各位大大的祝福,虽然昨天沈溺在code里面,但有很多好朋友跟大家给我祝福,很开心(我男朋友居然只有请我吃大餐~ 气~ (离题了))

继承的观念,当初在学校的时候就不有搞得很懂,后来写程式的时候最多用到 class 从来没用过 extension 不知道这样写对不对 (真是后悔当初在学校只顾著约会...哭哭)

extension UIWebView: UIWebViewDelegate {
(这里我不知道要怎么写 ...(翻桌))
}

class tmpWebView:UIWebView{
    var act:UIActivityIndicatorView
    var URL:NSString
    var bounce:Bool
    var color:UIColor
    var WebView:UIWebView
    init( act:UIActivityIndicatorView,WebView:UIWebView, URL:NSString,bounce:Bool,color:UIcolor){
        self.act = act
        self.delgate=WebView

    }

    func gourl(){
      act.color = UIcolor.purplecolr()
      WebView.scrollView.bounces =false
      WebView.delegate=self
      globalWebView.loadRequest(request)    
    }

    func webViewDidStarLoad(webView:WebView){
       salf.play()
    }
    func webVeiwDidFinishLoad(webView:WebView){
       salf.stop()
   }
    func play(){
         act.startAnimation()
    }
    func stop() {
        act.stopAnimation()
    }

}

我一直觉得,这样的逻辑好像不对 init, 这个东西是定义某些动作某些变量 这里的写法好像不对

extension 应该是 把UIWebView 跟 UIWebViewDelegate 定义在一起
但因为我不是很懂 继承的原理,所以不懂里面要写什么,在php 中 extension 是 继承class ,但在swift 里我爬了一下文,怎么感觉好像 class 反而去继承 UIWebView ...


可以放到extension里


先把你的问题描述捋顺了,我完全看不明白你的具体问题是什么。

更新:

我大概明白你的意思了,你就是想把相同的代码提出来。
那么我给你的建议是:

  1. 你可以写一个 webView 继承与 UIWebView,并在内部实现初始化构建,delegate 方法和 play() 等。

  2. extension UIWebView: UIWebViewDelegate {} 也可以,但是需要注意,Swift 现在并不支持扩展储值属性。并且这样的扩展会影响到所有的 UIWebView,当然,如果你需要影响所有的话。

非常重要的提示:不要没事儿就用 var 声明,要把习惯改为使用 let 声明。


你的思路是可行的:

class XXX{
    var act:UIActivityIndicatorView
    var URL:NSString
    var bounce:Bool
    var color:UIColor
    init( act:UIActivityIndicatorView, URL:NSString,bounce:Bool,color:UIcolor){
        self.act = act
        ...

    }
    
}

使用的时候:
var instance = XXX.init(act:act,...)
instance.delegate = self
self.view.addsubView(instance)

至于那些代理方法(delegate method)就可以写到extension中

另,生日快乐!


生快,可以单独写一个类去实现webView.delegate

【热门文章】
【热门文章】