快速访问助手功能视图

时间:2018-07-08 11:42:13

标签: swift function

我尝试从我的助手类访问函数“ addNavBar()”,但是当我运行模拟器时,HomeViewController上没有显示视图。

雨燕4

HomeViewController.swift

class HomeController: UIViewController {
let NavBar = NavigationBarHelper()
override func viewDidLoad() {
    super.viewDidLoad()
    NavBar.addNavBar()
}

}

NavigationBarHelper.swift

class NavigationBarHelper: UIView {
    func addNavBar() {
        let rect = CGRect(x: 10, y: 70, width: 250, height: 100)
        let navBarView = UIView(frame: rect)
        navBarView.backgroundColor = UIColor.blue
        self.addSubview(navBarView)
    }
}

3 个答案:

答案 0 :(得分:1)

NavigationBarHelper中的

self与视图控制器中的视图不同。将VC的视图作为参数传递。无需使NavigationBarHelper成为UIView的子类(实际上,它也可以是结构)。

class NavigationBarHelper {
    func addNavBar(to view: UIView) {
        let rect = CGRect(x: 10, y: 70, width: 250, height: 100)
        let navBarView = UIView(frame: rect)
        navBarView.backgroundColor = UIColor.blue
        view.addSubview(navBarView)
    }
}

请也遵守命名约定

class HomeController: UIViewController {
let navBarHelper = NavigationBarHelper()
override func viewDidLoad() {
    super.viewDidLoad()
    navBarHelper.addNavBar(to: self.view)
}

答案 1 :(得分:0)

代替每次使用都创建对象

let NavBar = NavigationBarHelper()

我认为像这样static使它更健壮

class NavigationBarHelper: UIView {
 static func addNavBar(view:UIView) {
    let rect = CGRect(x: 10, y: 70, width: 250, height: 100)
    let navBarView = UIView(frame: rect)
    navBarView.backgroundColor = UIColor.blue
    view.addSubview(navBarView)
 }
}

并直接调用它而无需创建对象

NavigationBarHelper.addNavBar(view: self.view)

答案 2 :(得分:-1)

一个更好的选择是/** * Returns an iterator over elements of type {@code T}. * * @return an Iterator. */ ,因此您不必为此创建特殊类

h2:hover {
border: solid 5px #FFF;
padding: 10px;
margin: 25px;
background: blue;
}

在您<a href="">...</a>中,您可以简单地编写此代码而无需创建帮助对象。

var titles = [
  "<a href=\"...\">Title 1</a>",
  "<a href=\"...\">Title 2</a>"
];

let html = $.parseHTML(titles[0]);
$("#log").append(html);