2016-04-20 2 views
0

Я пытаюсь создать TableView и я просто продолжать работать с проблемами, не самый опытный с ними, чтобы какая-то помощь будет здорово, Heres раскадровка view и вот мой код связанный контроллер видРозетки и UITableView неприятности

// 
// UpgradesTest.swift 
// myProject 
// 
// Created by fgstu on 4/19/16. 
// Copyright © 2016 AllenH. All rights reserved. 
// 


import UIKit 

class UpgradesTest: UIViewController, UITableViewDelegate, UITableViewDataSource { 

@IBOutlet weak var tableView: UITableView! 

@IBOutlet var shopButton: UIButton! 

@IBOutlet weak var shopLabel: UILabel! 


var shopData: [MyData] = [] 


override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
    tableView.dataSource = self 
    tableView.delegate = self 

    shopData = [ 
     MyData(shopItemData: "Item 1", shopItemPrice: 1), 
     MyData(shopItemData: "Item 2", shopItemPrice: 2), 
     MyData(shopItemData: "Item 3", shopItemPrice: 3) 
    ] 
} 

struct MyData { 
    var shopItemData:String 
    var shopItemPrice:Int 
} 

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
    print(shopData[indexPath.row]) 
} 

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

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

    cell.textLabel?.text = shopData[indexPath.row].shopItemData 

    cell.shopLabel.text = shopData[indexPath.row].shopItemData 

    cell.shopButton.label = shopData[indexPath.row].shopItemPrice 

    return cell 
} 



} 

в 4 ошибки:

значение типа 'UITableViewCell', как ни один член '' shopLabel
значение типа 'UITableViewCell', как ни один член «shopButt on '
Недопустимый магазинLabel от upgradeesTest до UILabel. Розетки не могут быть подключены к повторяющемуся контенту. магазинButton выход из upgradeesTest в UILabel недействителен. Розетки не могут подключаться к повторному контенту .

и в коде моя

cell.shopLabel.text = shopData[indexPath.row].shopItemData 

cell.shopButton.label = shopData[indexPath.row].shopItemPrice 

линия не работает, любая помощь?

+0

Ваши торговые точки (shopButton и shopLabel) не находятся в вашей камере, они находятся в подклассе UIViewController. Вам нужно создать собственный подкласс, если вы планируете добавлять подобные подпрограммы. Как бы то ни было, вы помещаете эти свойства в неправильное место. – Dare

+0

фиксировал выходы, теперь какая бы правильная строка кода изменила текст на shopLabel с ней в пользовательской ячейке с именем «Магазин» –

+0

Ваша пользовательская ячейка должна быть зарегистрирована с идентификатором повторного использования, и вам нужно отдать ответ значение dequeueReusableCellWithIdentifier() как соответствующий класс в cellForRowAtIndexPath. Без этих шагов вы все еще действуете на экземпляре UITableViewCell, который не имеет этих свойств. Я бы определенно сделал шаг назад и прочитал о наследовании, прежде чем исходить из этого момента. – Dare

ответ

0

Вам не хватает ключевой концепции. Когда у вас есть ячейки в таблице, и вы добавляете свои собственные метки и поля в эту ячейку, вы должны создать новый класс, полученный из UITableViewCell. После этого в Storyboard щелкните ячейку и используйте вкладку Identity Inspector, чтобы сообщить ей, что она должна использовать этот новый класс вместо стандартного.

Подключите розетки к ячейке, а не к виду.

class MyCell : UITableViewCell { 
    // put outlets here 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Shop",  forIndexPath: indexPath) as! MyCell 

    cell.textLabel?.text = shopData[indexPath.row].shopItemData 
    cell.shopLabel.text = shopData[indexPath.row].shopItemData 
    cell.shopButton.label = shopData[indexPath.row].shopItemPrice 

    return cell 
} 
+0

, который сработал! спасибо c :, также его shopButton.setTitle not shopButton.label для тех, кто использует этот ресурс –

+0

Я думаю, что shopButton.title = "some string" тоже работает. Попробуй. – ryantxr

Смежные вопросы