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 프로그래밍 (기본편)' 예제를 참고하였다.