У меня проблема, у меня есть контроллер, а в viewdidload я пытаюсь загрузить подвью, созданный из xib-файла.SWIFT TableView не отвечает
Мой «пользовательский» подвид хорошо добавлен к моему первому контроллеру, но tableview не отвечает ... я имею в виду, что он не прокручивается, и когда я нажимаю на него, ничего не происходит ... (у меня нет реализован еще метод запуска действия при нажатии ячейки, но целле не выделяется при нажатии).
Вот код:
class FirstViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let v1 = MyViewTest(frame: CGRectZero)
v1.tableView.dataSource = self
v1.tableView.delegate = self
self.view.addSubview(v1)
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//datasource method returning the what cell contains
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MyTestCell")
//reusing the previous scrolled cells from table view(if any)
//cell.textLabel?.text = array[indexPath.row]
cell.textLabel?.text = "test"
//passing each elements of the array to cell
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//datasource method returning no. of rows
return 14
}
}
здесь код в MyViewTest
class MyViewTest: UIView {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var tableView: UITableView!
var view:UIView!
let nibName:String = "MyViewTest"
override init(frame: CGRect) {
super.init(frame:frame)
setup()
}
required init(coder aDecoder: NSCoder) {
//fatalError("init(coder:) has not been implemented")
super.init(coder: aDecoder)
setup()
}
func setup() {
view = loadViewFromNib()
let screenSize: CGRect = UIScreen.mainScreen().bounds
let sWidth = screenSize.width
let sHeight = screenSize.height
let xPos = sWidth/2-(view.bounds.width/2)
let yPos = sHeight/2-(view.bounds.height/2)
view.frame = CGRectMake(xPos, yPos, view.bounds.width, view.bounds.height)
addSubview(view)
}
func loadViewFromNib() -> UIView {
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: nibName, bundle: bundle)
let mview = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return mview
}
}
в файле XIb, у меня есть только вид с меткой и мой TableView в файл XIB связан. с его классом (в идентификаторе).
Если вы знаете, почему мой взгляд таблицы не работает, было бы здорово ТНХ!
похоже, что v1 может получить все штрихи, так как он находится поверх табличного обзора. Установите фон v1 на некоторый цвет (или используйте отладчик вида) и проверьте это. – JDM
Я добавил экран печати моего xib-файла, у меня уже был цвет для v1 ... –
Кажется, вы настроили кадр MyTestView на CGRectZero. Затем вы добавляете таблицу в качестве подзадачи этого представления с установленным размером кадра. Поскольку MyTestView имеет ширину и высоту 0, а значение по умолчанию для представления - не для подзапроса клипов, я думаю, вы можете увидеть таблицу, но не щелкнуть ее. Попробуйте настроить размер вашего MyTestView на размер экрана? –