2014-07-09 5 views
0

스위프트에 문제가 있습니다. 내 테이블의 셀을 누르면 UIWebView가 있고 웹 페이지를로드하는 다른 ViewController로 segue를 수행합니다. 이것은 잘 작동합니다. 사용자 정의의 ViewController 코드는 다음과 같습니다Cant Unwrap에서 ViewController 결과 푸시.

class ViewController_ShowView : UIViewController 
{ 
var showName: String? 
var showUrl: String? 
@IBOutlet var webView: UIWebView 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    self.title = showName 

    var requestURL = NSURL(string: showUrl) 
    var request = NSURLRequest(URL: requestURL) 
    webView.loadRequest(request) 
} 
} 

을 그러나, 나는 (사용자가 UILocalNotification를 클릭 할 때) 그것을에서 웹 view.loadRequest (요청) 라인에 충돌이 발생 AppDelegate에에서의 ViewController을로드하려고 위. 여기에 내가 전화를 시도하고 방법입니다

var currentShowsViewController = viewController.topViewController as ViewController_CurrentShows 
var viewControllerToPush = ViewController_ShowView() 
viewControllerToPush.showName = "Test" 
viewControllerToPush.showUrl = "http://www.google.com"      
currentShowsViewController.navigationController.pushViewController(viewControllerToPush, animated: false) 

이 오류와 충돌이 발생 캔트 포장을 벗긴 Optional.None

가 수행 SEGUE 방법하지만이 방법에서 작동 내가 왜 혼란 스러워요 .. .이 코드 줄에 의한

답변

3

문제 :

var viewControllerToPush = ViewController_ShowView() 

당신은 그것의 스토리 보드에서 뷰 컨트롤러를 초기화해야한다. 당신은 또한 당신의 스토리 보드를 열고 showViewVC에 뷰 컨트롤러의 ID를 설정해야합니다

let storyboard : UIStoryboard = UIStoryboard(name: "MainStoryboard", bundle: nil); 
let viewControllerToPush : ViewController_ShowView 
    = storyboard.instantiateViewControllerWithIdentifier("showViewVC") as ViewController_ShowView; 

참고 : 여기 당신이 그것을 할 수있는 방법이다.

비고 : @IBOutlet var webView: UIWebView가 초기화되지 않기 때문에

예외가 던져. Swift의 @IBOutlet은 선택 사항이므로 Cant Unwrap Optional.None이 표시됩니다.

+0

감사합니다.이 작품은 "MainStoryBoard"대신 "Main"스토리 보드의 이름을 지정해야합니다. – PretzelJesus

+0

코드를 통해이 작업을 수행하려면이 문제가 발생하지 않도록 UIWebView를 인스턴스화하는 방법이 있습니까? – PretzelJesus

+0

당신은'viewDidLoad' 메소드에서'UIWebView'를 생성하고 인스턴스를 생성 할 필요가 있습니다. 그리고'self.view.addSubview (webView)'를 호출하여 뷰 컨트롤러의 뷰 계층 구조에 UIWebView 인스턴스를 추가해야합니다. 또한 WebView 프레임 또는 자동 레이아웃 제약 조건을 적절하게 배치해야합니다. – Keenle

관련 문제