gpt4 book ai didi

UIStoryBoardSegue 方法的 iOS Swift 问题

转载 作者:搜寻专家 更新时间:2023-11-01 05:59:34 25 4
gpt4 key购买 nike

我正在尝试将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com