조앤의 기술블로그

[뉴스리더] 뉴스 상세보기 구현 (웹뷰, 뷰컨트롤러 간 데이터 전달하기, iOS) 본문

Programming/프로젝트

[뉴스리더] 뉴스 상세보기 구현 (웹뷰, 뷰컨트롤러 간 데이터 전달하기, iOS)

쬬앤 2020. 3. 20. 14:11

뉴스 피드 화면은 FeedListViewController.swift 파일에서 구현되었다. 

파싱된 요소들이 각 피드에 출력된다. 

 

여기서 특정 피드를 클릭하면 새로운 화면으로 이동하여 뉴스 상세보기 화면을 웹뷰로 나타내주는 기능을 구현해보도록 하겠다.

뉴스 상세보기 화면(웹뷰)는 FeedWebViewController.swift 파일에서 구현한다. 

 

[FeedWebViewController.swift]

import UIKit
import WebKit
class FeedWebViewController: UIViewController {

    var newsLink: String? // 이전 화면에서 전달한 뉴스 링크
   
    @IBOutlet var newsWeb: WKWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let url = URL(string: newsLink!)
        let request = URLRequest(url: url!)
        newsWeb.load(request)
       
    }
}

전달받은 링크를 웹뷰에 나타내는 코드이다. 

 

[FeedListViewController.swift]

class FeedListViewController: UITableViewController, XMLParserDelegate {
   
   ////.....
   
    //웹 뷰 화면으로 뉴스링크 전달하기
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let cell = sender as? UITableViewCell, let indexPath = tableView.indexPath(for: cell){
            if let vc = segue.destination as? FeedWebViewController {
                vc.newsLink = (myFeed.object(at: indexPath.row) as AnyObject).object(forKey: "link") as? String
            }
        }
    }
    /////.....
}

뉴스 피드를 나타내는 FeedListViewController.swift 파일에서 xml에서 파싱한 뉴스의 링크를 FeedWebViewController.swift 파일에 전달하는 코드이다. prepare 메소드를 사용하였다. 

 

'꼼꼼한 재은씨의 Swift 프로그래밍 (기본편)' 예제를 참고하였다.