2015-09-02 2 views
1

У меня есть следующая проблема:NSIndexPath начинается с 1

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    // ... 
    println(indexPath.row) 
} 

Мой выход выглядит следующим образом:

1 
0 
1 
0 

numberOfRowsInSection говорит мне, что у меня есть пунктов:

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    if (self.actionDto != nil){ 
     println(self.actionDto?.count) 
     return self.actionDto!.count 
    } 
    return 0 
} 

Я проверил это indexpath.row is starting from 1 instead of 0? но не может действительно следовать за ответом или решить мою проблему.

На самом деле, я просто хочу нажать метку в ячейке и сделать что-то еще. Но я должен точно знать, в какой строке он был.

Я думал об использовании сделалSelectRowAtIndexPath способ. Тогда у меня проблема: если я нажимаю на метку, метод didSelectRowAtIndexPath не вызывается. (Я думаю, что из-за более чем одного наблюдателя на этом лейбле -.> У меня есть метод делегата на этой камере, а другой я полагаю это TableView.)

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let indexPath = tableView.indexPathForSelectedRow() 
    let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as! TimelineCell 
    println("The number of cell is \(currentCell.numberOfRowAtIndexPath)") 
} 

Если я нажимаю в клетку, но не на этикетках или изображения все работает нормально, и я получаю правильное количество строк. Возможно, кто-то знает, как я могу добавить более одного «наблюдателя» на ярлык, например. Так что мои Selectormethod и didSelectRowAtIndexPath знали о метке, постученной в ячейке. Я думаю, что это может решить мою проблему, что я могу сделать свой собственный Selectormethod со знанием правой строки.

Для людей, которые хотят знать, что я имею в виду с Selectormethod:

let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed")) <- 
label.addGestureRecognizer(gestureRecognizer) 

func labelPressed() { 
    delegate?.switchToOwnProfil!() 
} 

Таинственное Дело в том, что первый вывод показывает мне сначала 1, а не 0, но, возможно, я что-то упускается из виду.

Заранее благодарен!

+0

вы можете просто помечать ярлык с indexpath.row в cellForAtIndexPath –

+0

и после этого в методе получить тег этикетки, то вы получите ряд Tableview –

+0

Может показать небольшой фрагмент кода меток «tagging»? –

ответ

1
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
// ... 
yourLabel.tag = indexPath.row 
let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed:")) <- 
yourLabel.addGestureRecognizer(gestureRecognizer) 
println(indexPath.row) 
} 

и в функции

func labelPressed(label:UILable) { 
     println(label.tag) 
    delegate?.switchToOwnProfil!() 
} 
+0

Простите меня, если синтаксис неправильный, но идея такая же. –

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