【发布时间】:2014-06-08 00:26:24
【问题描述】:
我正在尝试将 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!'”
这是我要调用的控制器:
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)
}
}
我希望有人可以帮助我解决这个问题,我一直在努力解决这个问题。 :/
谢谢!
【问题讨论】:
-
setURL的方法签名是什么 - 你能发布那个视图控制器的标题吗? -
看起来您的 setURL 方法需要的是 NSURL,而不是字符串
-
标题是什么意思? Swift 没有任何标题:s
-
你的destinationViewController 在Objective-C 中吗?如果是这样,它将有一个桥接头。或者,如果它在 Swift 中,请发布。
-
我已经用控制器更新了帖子,以便由 segue.destinationViewController 调用
标签: ios swift uistoryboardsegue ios8