사이드 바 메뉴에서 선택한 행을 기반으로 UIWebView에 URL을로드하려고합니다. 메뉴의 경우 SWRevealViewController를 사용하고 있으며 Alamofire 및 SwiftyJSON을 사용하여 JSON 메뉴를로드하고 있습니다. 그것은 3 행과 각 행에 대한 URL이 있습니다.사이드 바 메뉴에서 UIWebView의 잘못된 URL로드
import UIKit
import Alamofire
class MenuTableViewController: UITableViewController {
var valueToPass = String()
var jsonArray = []
override func viewDidLoad() {
super.viewDidLoad()
Alamofire.request(.GET, "my-JSON-URL").responseJSON { (responseData) -> Void in
if((responseData.result.value) != nil) {
let swiftyJsonVar = JSON(responseData.result.value!)
if let resData = swiftyJsonVar["items"].arrayObject {
self.jsonArray = resData as! [[String:AnyObject]]
}
if self.jsonArray.count > 0 {
self.tableView.reloadData()
}
}
print(self.jsonArray)
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (jsonArray.count)
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("DynamicCell", forIndexPath: indexPath)
let array = jsonArray[indexPath.row]
cell.textLabel?.text = array["name"] as? String
return cell
}
그리고 이렇게이보기 컨트롤러에서 SEGUE : 메뉴 내 코드는 다음과 같습니다
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let indexPath = tableView.indexPathForSelectedRow!.row
var array = jsonArray[indexPath]
let url = array["url"] as? String
valueToPass = url!
print(valueToPass)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
if (segue.identifier == "showDetail") {
let viewController = segue.destinationViewController as! UINavigationController
let targetController = viewController.topViewController as! DetailViewController
targetController.passedValue = valueToPass
}
}
을 그리고 이것은 DetailViewController 내 코드입니다 :
import UIKit
class DetailViewController: UIViewController {
@IBOutlet weak var webView: UIWebView!
@IBOutlet weak var menuButton: UIBarButtonItem!
var passedValue = String()
override func viewDidLoad() {
super.viewDidLoad()
if revealViewController() != nil {
menuButton.target = revealViewController()
menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
self.view.addGestureRecognizer(revealViewController().panGestureRecognizer())
}
let url = NSURL (string: passedValue)
let requestObj = NSURLRequest(URL: url!)
webView.loadRequest(requestObj)
}
}
이 문제는 메뉴에서 처음으로 행을 선택하면 DetailViewController가 공백으로 표시됩니다. 두 번째 행을 선택하면 첫 번째 URL, 세 번째 시간 - 두 번째 URL 등이 표시됩니다. MenuTableViewController의 didSelectRowAtIndexPath의 print (valueToPass)가 각 셀에 대해 올바른 URL을 인쇄하지만, 내가 선택한 행을 기반으로하지 않습니다.
나는 그것을 시도했지만 여전히 동일하다. 하지만 한 번 행을 선택하고 두 번째 동일한 행을 선택하면 UIWebView에서 올바른 내용을 얻을 수 있다는 것을 깨달았습니다. –