ViewController 외부에서 View(Swift) 만들기

2654 단어 SwiftiOS

ViewController에서 View 기술 제외


말로 표현하기는 어렵지만, View Controller에 뷰를 계속 추가하면 Controller가 커지기 때문에 뷰로 나눠서 설명하고 싶어요.
예를 들어FirstViewController에 UIWebView 4개를 추가하고 싶을 때(생각지도 못했지만) 4개를 더 추가하면 ViewController가 힘들겠죠.
그래서 여러 가지 뷰를 Controller 밖으로 가져가면 Controller가 시원하고 좋을 것 같아서요.
iOS 원주민 개발 시작했는데 실패???하면서 반모드를 밟으면 더 좋은 방법이 있으면 알려주고 싶어요.

ViewController


화면 크기(frame 1-4)를 결정하고 WebView를 1-4로 만들어 표시합니다.

import UIKit

class FirstViewController: UIViewController{

    override func viewDidLoad() {
        super.viewDidLoad()

        let frame1 = CGRect(x: 0, y: 0, width: self.view.bounds.width / 2, height: self.view.bounds.height / 2)
        let frame2 = CGRect(x: self.view.bounds.width / 2, y: 0, width: self.view.bounds.width / 2, height: self.view.bounds.height / 2)
        let frame3 = CGRect(x: 0, y: self.view.bounds.height / 2, width: self.view.bounds.width / 2, height: self.view.bounds.height / 2)
        let frame4 = CGRect(x: self.view.bounds.width / 2, y: self.view.bounds.height / 2, width: self.view.bounds.width / 2, height: self.view.bounds.height / 2)


        let web1 = AppleWebView(frame:frame1)
        let web2 = AppleWebView(frame:frame2)
        let web3 = AppleWebView(frame:frame3)
        let web4 = AppleWebView(frame:frame4)


        self.view.addSubview(web1.createWebView())
        self.view.addSubview(web2.createWebView())
        self.view.addSubview(web3.createWebView())
        self.view.addSubview(web4.createWebView())
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

AppleWebView

import UIKit

class AppleWebView: UIWebView,UIWebViewDelegate {

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.delegate = self
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    func createWebView() -> UIWebView{
        let url: NSURL = NSURL(string: "http://apple.com")!
        let request: NSURLRequest = NSURLRequest(URL: url)
        self.loadRequest(request)

        return self
    }

    func webViewDidFinishLoad(webView: UIWebView!) {
        println("webViewDidFinishLoad")
    }

    func webViewDidStartLoad(webView: UIWebView!) {
        println("webViewDidStartLoad")
    }
}

스크린


스타즈바와 네이비게이션바의 높이를 고려하지 않아 화면이 무너진 것으로 보인다.

「👿이렇게 하면 안 되는데...","😊더 좋은 방법이 있다면 알려주세요!

좋은 웹페이지 즐겨찾기