UIStoryBoardSegue 方法的 iOS Swift 问题

标签 ios swift uistoryboardsegue ios8

我正在尝试将 Objective-C 方法转换为 Swift。

Objective-C 方法如下:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"])
    {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSString *string = [feeds[indexPath.row] objectForKey: @"link"];

        string = [string stringByReplacingOccurrencesOfString:@"\n" withString:@" "];

        [[segue destinationViewController] setUrl:string];
    }
}

我目前得到的 Swift 方法(有问题)如下:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!)
{
    if (segue.identifier == "showDetail") {

        var indexPath:NSIndexPath = self.tableView.indexPathForSelectedRow()
        var string:NSString = self.feeds[indexPath.row] as String

        string = string.stringByReplacingOccurrencesOfString("\n", withString: "")

        segue.destinationViewController.setURL(string, forKey: nil)
    }
}

主要问题在于最后一行:

segue.destinationViewController.setURL(string, forKey: nil)

我收到以下错误:

“无法将表达式的类型‘Void’转换为类型‘NSURL!’”

这是我要调用的 Controller :

import UIKit

class DetailViewController: UIViewController
{
    var url:NSString!
    var webView:UIWebView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        var url:NSURL = NSURL(string:self.url.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding))
        var request:NSURLRequest = NSURLRequest(URL: url)
        webView.loadRequest(request)
    }
}

我希望有人能帮我解决这个问题,我已经为此苦苦挣扎了一段时间。 :/

谢谢!

最佳答案

在 Objective C 或 Swift 中访问 destinationViewController 时使用的正确模式是将其转换为正确的子类类型。这将允许您访问子类的方法和属性。

所以你应该说

let myDestVC = segue.destinationViewController as MyViewControllerClass 

或者在 Objective C 中

MyViewControllerClass *myDestVC =(MyViewControllerClass *)segue.destinationViewController;

关于UIStoryBoardSegue 方法的 iOS Swift 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101883/

相关文章:

ios - 应用程序图标显示在模拟器上,而不显示在真实的iPhone上

iPhone 使用另一个 View 添加 View

ios - IOS中消息应用的数据

ios - 使用 segue 将已解析的数据从父 View 传递到 subview

uinavigationbar - 自定义展开转场期间导航栏为黑色

ios - NSPredicate 转化为深度过滤值

ios - Xcode 项目(从 gi​​thub 下载的 zip)构建,但我在模拟器中出现黑屏

ios - 将swiftui集成到objective c框架中

ios - 使用 Parse 刷新数据

ios - 是否可以从另一个 Storyboard转到特定的 View Controller