如何在Swift中使用accesoryType?

时间:2015-04-18 11:39:08

标签: ios xcode swift

import UIKit

class RestaurantTableViewController: UITableViewController, UITableViewDelegate {

var restaurantIsVisited = [Bool](count: 21, repeatedValue: false)

var restaurantNames = ["Cafe Deadend", "Homei", "Teakha", "Cafe Loisl", "Petite Oyster", "For Kee Restaurant", "Po's Atelier", "Bourke Street Bakery", "Haigh's Chocolate", "Palomino Espresso", "Upstate", "Traif", "Graham Avenue Meats", "Waffle & Wolf", "Five Leaves", "Cafe Lore", "Confessional", "Barrafina", "Donostia", "Royal Oak", "Thai Cafe"]

var restaurantImages = ["cafedeadend.jpg", "homei.jpg", "teakha.jpg", "cafeloisl.jpg", "petiteoyster.jpg", "forkeerestaurant.jpg", "posatelier.jpg", "bourkestreetbakery.jpg", "haighschocolate.jpg", "palominoespresso.jpg", "upstate.jpg", "traif.jpg", "grahamavenuemeats.jpg", "wafflewolf.jpg", "fiveleaves.jpg", "cafelore.jpg", "confessional.jpg", "barrafina.jpg", "donostia.jpg", "royaloak.jpg", "thaicafe.jpg"]

var restaurantLocations = ["Hong Kong", "Hong Kong", "Hong Kong", "Hong Kong", "Hong Kong", "Hong Kong", "Hong Kong", "Sydney", "Sydney", "Sydney", "New York", "New York", "New York", "New York", "New York", "New York", "New York", "London", "London", "London", "London"]

var restaurantTypes = ["Coffee & Tea Shop", "Cafe", "Tea House", "Austrian / Causual Drink", "French", "Bakery", "Bakery", "Chocolate", "Cafe", "American / Seafood", "American", "American", "Breakfast & Brunch", "Coffee & Tea", "Coffee & Tea", "Latin American", "Spanish", "Spanish", "Spanish", "British", "Thai"]


override func viewDidLoad() {
    super.viewDidLoad()

    // Uncomment the following line to preserve selection between presentations
    // self.clearsSelectionOnViewWillAppear = false

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem()
}

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

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // Return the number of rows in the section.
    return self.restaurantNames.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cellIdentifier = "Cell"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! CustomTableViewCell

    // Configure the cell...
    cell.nameLabel.text = restaurantNames[indexPath.row]
    cell.thumbnailImageView.image = UIImage(named: restaurantImages[indexPath.row])
    cell.locationLabel.text = restaurantLocations[indexPath.row]
    cell.typeLabel.text = restaurantTypes[indexPath.row]

    // Circular image
    //   cell.thumbnailImageView.layer.cornerRadius = 10.0
    cell.thumbnailImageView.layer.cornerRadius =      cell.thumbnailImageView.frame.size.width / 2
    cell.thumbnailImageView.clipsToBounds = true

    if restaurantIsVisited[indexPath.row] {
        cell?.accessoryType = UITableViewCellAccessoryType.Checkmark
    } else {
        cell?.accessoryType = UITableViewCellAccessoryType.None
    }

    return cell
}

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    let optionMenu = UIAlertController(title: nil, message: "What do you want to do?", preferredStyle: .ActionSheet)

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
    optionMenu.addAction(cancelAction)

    self.presentViewController(optionMenu, animated: true, completion: nil)

    let callActionHandler = { (action: UIAlertAction!) -> Void in

        let alertMessage = UIAlertController(title: "Service Unavailable", message: "Sorry", preferredStyle: UIAlertControllerStyle.Alert)
        alertMessage.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
        self.presentViewController(alertMessage, animated: true, completion: nil)
    }

    let callAction = UIAlertAction(title: "Call" + "123-000-\(indexPath.row)", style: .Default, handler: nil)
    let isVisitedAction = UIAlertAction(title: "I've been here", style: UIAlertActionStyle.Default, handler: {
        (action:UIAlertAction!) -> Void in


        cell?.accessoryType = .Checkmark
        self.restaurantIsVisited[indexPath.row] = true
    })
    optionMenu.addAction(isVisitedAction)
}

Xcode表示它没有名为“accessoryType”的成员 它还要求我删除问号。

以下是CustomTableViewCell的代码:

import UIKit

class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var locationLabel: UILabel!
@IBOutlet weak var typeLabel: UILabel!
@IBOutlet weak var thumbnailImageView: UIImageView!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}

这没用,页面要求我添加更多细节,我不知道要添加什么,所以...... 更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多细节,更多详情,更多详情,更多详情,更多详情,更多详情,更多详情,更多详情,更多详情,更多详情,更多详情,更多详情,更多细节,更多详情,更多详情,更多详情,

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式在swift中设置配件类型。

    cell.accessoryType = UITableViewCellAccessoryType.None
    cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
    cell.accessoryType = UITableViewCellAccessoryType.DetailDisclosureButton

愿这对你有所帮助。

答案 1 :(得分:0)

因为你的语法似乎正确

var cell = UITableViewCell(frame: CGRectMake(0, 0, 200, 200))

cell.accessoryType = UITableViewCellAccessoryType.Checkmark
cell.accessoryType = .Checkmark

两者似乎都在使用Swift 1.2的xCode Beta 6.3中工作

我只能认为您的单元格未正确初始化或未初始化为UITableViewCell

Swift中的另一种类型的单元格是UICollectionViewCell

var newCell = UICollectionViewCell(frame: CGRectMake(0, 0, 200, 200))

newCell.accessoryType = UICollectionViewCellAccessorryType.Checkmark

UICollectionViewCell .accessoryType 因此,使用UIColectionViewCellAccessoryType 是可能的 尝试在.accessoryType访问UICollectionViewCell将导致错误’UICollectionViewCell’ does not have a member named ‘accessoryType’

如果您为细胞使用其他类型,请举例说明您的细胞类型确实有.accessoryType

尝试看看你是否按照你的意愿进行初始化