【问题标题】:Does not have a member named没有名为的成员
【发布时间】:2014-11-12 05:38:15
【问题描述】:

我正在创建带有传递数据的简单应用程序,但我不知道如何修复它。在这段代码中。

       (segue.destinationViewController as DetailViewController).url = (self.arrayOfPrograms.objectAtIndex(indexPath.row) as Program).url

我遇到了这个错误!

“'DetailViewController' 没有名为 'url' 的成员”这是我的代码

 class Program: NSObject {
var name: NSString
var url: NSString

init(name:NSString, url:NSString) {
    self.name = name
    self.url = url
}

}

视图控制器

class ViewController: UITableViewController, UISearchBarDelegate, UISearchDisplayDelegate, ADBannerViewDelegate {

    var arrayOfPrograms: NSArray = []
    @IBOutlet weak var ViewController: UITableView?
    var color = UIColor.whiteColor()
    var sideMenu : SideMenu?
    var bannerView:ADBannerView?

    override func viewDidLoad() {
        //Písmo v Navigation bare.
        self.navigationController?.navigationBar.titleTextAttributes =
            [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 20)!,
                NSForegroundColorAttributeName: UIColor.whiteColor()]

        super.viewDidLoad()
        self.navigationController?.navigationBar.tintColor = color
        self.canDisplayBannerAds = true
        self.bannerView?.delegate = self
        self.bannerView?.hidden = true

        /*
        sideMenu = SideMenu(sourceView: self.view, menuData: ["Slovenské Televízie", "České televízie", "Nemecké televízie"])
        sideMenu!.delegate = self
        */
        navigationController?.hidesBarsOnSwipe = true  // Zmiznutie Navigation baru na pohyb prsta nahor.

        self.arrayOfPrograms = [Program(name: "Markíza", url: "http://1.com")]

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return self.arrayOfPrograms.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

        let imageName = UIImage(named: (self.arrayOfPrograms.objectAtIndex(indexPath.row) as Program).name)

        cell.imageView.image = imageName
        cell.textLabel.text = (self.arrayOfPrograms.objectAtIndex(indexPath.row) as Program).name
        cell.textLabel.font = UIFont(name: "HelveticaNeue-Bold", size: 15)
        cell.textLabel.textColor = UIColor(red: 101.0/255.0, green: 112.0/255.0, blue: 122.0/255.0, alpha: 1.0);
        cell.textLabel.highlightedTextColor = UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1.0);
        cell.detailTextLabel?.text = "Kategória  ★★★☆☆"
        cell.detailTextLabel?.font = UIFont(name: "HelveticaNeue-Light", size: 10)
        cell.detailTextLabel?.textColor = UIColor(red: 101.0/255.0, green: 112.0/255.0, blue: 122.0/255.0, alpha: 1.0);
        cell.detailTextLabel?.highlightedTextColor = UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1.0);
        cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator

        var myBackView=UIView(frame:cell.frame)
        myBackView.backgroundColor = UIColor(red: 81.0/255.0, green: 196.0/255.0, blue: 212.0/255.0, alpha: 1.0);
        cell.selectedBackgroundView = myBackView;
        return cell
    }

    override func supportedInterfaceOrientations() -> Int {
        return Int(UIInterfaceOrientationMask.Portrait.rawValue)
    }
    /*
    func sideMenuDidSelectItemAtIndex(index: Int) {
        sideMenu?.toggleMenu()
        if index == 1 {
            let vc = ViewController(nibName: "ViewController", bundle: nil)
            navigationController?.pushViewController(vc, animated: true)
        }
        */

    func bannerViewDidLoadAd(banner: ADBannerView!) {
        self.bannerView?.hidden = false
    }

    func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {
        return willLeave
    }

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
        self.bannerView?.hidden = true
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        var indexPath: NSIndexPath = self.tableView?.indexPathForSelectedRow() as NSIndexPath!
        var destinationViewController: DetailViewController
        (segue.destinationViewController as DetailViewController).url = (self.arrayOfPrograms.objectAtIndex(indexPath.row) as Program).url
    }
}

我无法解决这个问题。

如果我这样做:

class DetailViewController {
    var url: NSString

    init(url:NSString) {
        self.url = url
    }
}

我会得到“DetailViewController”的无效重新声明

DetailViewController

import UIKit
import MediaPlayer

class DetailViewController: UIViewController, ADBannerViewDelegate{

var moviePlayer:MPMoviePlayerController!
var color = UIColor.whiteColor()


    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController?.navigationBar.titleTextAttributes =
            [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 20)!,
            NSForegroundColorAttributeName: UIColor.whiteColor()]
        self.navigationController?.navigationBar.tintColor = color
       self.navigationItem.title = (self.arrayOfPrograms.objectAtIndex as Program).name

       var url = NSURL(self.arrayOfPrograms.objectAtIndex as Program).url
        moviePlayer = MPMoviePlayerController(contentURL: url)

        moviePlayer.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
        moviePlayer.view.sizeToFit()
        self.view.addSubview(moviePlayer.view)
        moviePlayer.fullscreen = true
        moviePlayer.controlStyle = MPMovieControlStyle.Embedded
    }

    override func supportedInterfaceOrientations() -> Int {
        return Int(UIInterfaceOrientationMask.Portrait.rawValue)
    }

【问题讨论】:

  • 你的班级Program 定义了url。也许你的班级DetailViewController 没有?
  • 错误信息描述了问题。您的 DetailViewController 没有名为 url 的成员。您需要添加一个类似于为Program 添加一个的方式。
  • 检查我的编辑..对不起,我是初学者
  • 请出示您的 DetailViewController 的真实代码。到目前为止,您所展示的不是它。复制并粘贴。

标签: ios xcode swift tableview member


【解决方案1】:

如果您将此作为编译错误,则 DetailViewController 未定义名为 url 的属性。 如果在执行过程中出现错误,那么destinationViewController 不是DetailViewController。设置断点并检查它到底是什么类型。

【讨论】:

  • 检查我的编辑。我显示了我所有的代码。如何为 DetailViewController 定义属性?
  • ??你已经有两个属性,moviePlayer 和 color。为什么定义第三个有问题??
  • 但我想要的属性将修复“'DetailViewController' 没有名为 'url' 的成员”这个错误
  • 然后照我说的添加一个名为'url'的属性
  • 好吧,我修好了。非常感谢,但我还有最后一个问题。在“var url = NSURL(self.arrayOfPrograms.objectAtIndex as Program).url”行中出现错误找不到成员网址。
猜你喜欢
  • 2015-05-23
  • 2014-11-09
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-26
  • 2013-05-23
  • 2014-08-26
相关资源
最近更新 更多