首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS Swift问题的UIStoryBoardSegue方法

iOS Swift问题的UIStoryBoardSegue方法
EN

Stack Overflow用户
提问于 2014-06-08 00:26:24
回答 2查看 5.3K关注 0票数 1

我正在尝试将Objective方法转换为Swift.

目标-C方法如下:

代码语言:javascript
复制
- (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方法(有一个问题)如下:

代码语言:javascript
复制
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)
    }
}

主要问题是最后一行:

代码语言:javascript
复制
segue.destinationViewController.setURL(string, forKey: nil)

我得到了以下错误:

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

,这是我要调用的控制器:

代码语言:javascript
复制
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)
    }
}

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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-08 00:52:27

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

所以你应该说

代码语言:javascript
复制
let myDestVC = segue.destinationViewController as MyViewControllerClass 

或在目标C中

代码语言:javascript
复制
MyViewControllerClass *myDestVC =(MyViewControllerClass *)segue.destinationViewController;
票数 6
EN

Stack Overflow用户

发布于 2014-06-08 00:43:47

你为什么打电话给segue.destinationViewController.setURL(string, forKey: nil)forKey:部分从何而来?我认为您只是调用了错误的方法,而错误消息并不是很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24101883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档