2014-09-08 3 views
-4

Сначала индексный путь вызывается в последовательности 0,1,2 ... но после нажатия на представление таблицы, func tablview вызывается с указателем, который кажется полностью случайным, и, следовательно, я не могу воспроизвести одни и те же данные. Я использую массив для корреляции строк таблицы.Swift: cellForRowAtIndexPath не вызывается в порядке indexPaths

Код здесь:

// MARK: - Table view data source 

override func numberOfSectionsInTableView(tableView: UITableView!) -> Int { 
    // #warning Potentially incomplete method implementation. 
    // Return the number of sections. 
    return 1 
} 


override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete method implementation. 
    // Return the number of rows in the section. 
    return myList.count 
} 
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { 
// Configure the cell... 

    println("table view --> ") 
    let CellID : NSString = "Cell" 
    var cell : UITableViewCell = tableView?.dequeueReusableCellWithIdentifier(CellID)as UITableViewCell 
    var VehicleName = cell.viewWithTag(1) as UILabel 
    var VehicleNumber = cell.viewWithTag(2) as UILabel 

    if let ip = indexPath 
    { 

     VehicleName.text = arrayData[ip.row*2]; 
     VehicleNumber.text = arrayData[ip.row*2+1]; 
    } 
} 
    return cell 

} 
+1

Почему вы ожидали, что порядок на indexPaths? Кроме того, здесь упоминается много неправильных имен функций. Пожалуйста, дайте понять, чего вы хотите достичь здесь, что вы пробовали до сих пор и что не работает. –

+0

Я получаю данные из arrayData и используя indexPath для получения данных поочередно. Поэтому, когда cellForRowAtIndexPath не вызывается в последовательности, как раньше, я получаю случайные данные, отображаемые в таблице. – psijic

ответ

0

У вас есть проблемы проектирования. Вы должны иметь возможность предоставлять данные по запросу в режиме произвольного доступа.

Изучите документацию по UITableView и `UITableViewDataSource '.

API вызывает cellForRowAtIndexPath, поскольку ему нужны данные, он просто запрашивает данные, которые ему нужно отображать, а не все данные каждый раз. Он создает только те ячейки, которые отображаются. Если у вас было 1000 строк данных и они отображали строки 900, то, скажем, 903, нужны только эти данные. Если просмотр прокручивает для отображения еще одной строки, ему требуется только больше данных из строки 904.

+0

Спасибо. Вероятно, я попытаюсь изменить зависимости от моего массива. – psijic

0

Нет абсолютно никакой гарантии, в каком порядке вызывается indexPaths cellForRowAtIndexPath. Это на основе UIKit.

Вам необходимо и может полностью контролировать, как массивы данных хранят данные. В этом случае это arrayData. У меня также есть ощущение, что это связано с myList, но это не видно из вашего фрагмента кода. Работайте над тем, как элементы расположены внутри arrayData, и тогда у вас будут ожидаемые элементы во всех ячейках.

+0

спасибо, попробуем сделать его независимым от моего массива. – psijic

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