2015-12-08 3 views
0

У меня есть класс AVPlayer, который я использую в подробном представлении, которое принимает индексную строку типа Int.Можете ли вы отключить NSIndexPath до NSInterger

Я получаю indexPath из таблицы viewViewViewDidSelectAtIndexPath таблицы перед отправкой его в детали VC для использования.

Я попытался просто просто опустить NSIndexPath как! NSInteger перед отправкой его на детали VC для использования, но он выходит из строя без аварийного сообщения. Поэтому я немного зациклился на том, как это сделать.

Можно ли отказаться от этого? Как я могу получить номер из NSIndexPath в Int, чтобы я мог использовать его в своем классе?

+0

Посмотрите на документы для 'NSIndexPath' (базовые документы и' категории UIKit'). Существуют соответствующие методы для получения строки, раздела, элемента или других индексов из 'indexPath'. И просто кастинг совершенно неправильный. – rmaddy

+0

NSIndexPath * - указатель на объект. Кастинг любого указателя на объект, включая NSIndexPath * на Int, определенно не даст вам ничего даже отдаленно полезного. – gnasher729

ответ

0

NSIndexPath всегда * комбинация секции и либо строки (для UITableView) или элемент (для UICollectionView).

вам нужно распустить раздел путем доступа к единому индексу:

id object = [[self dataSource] objectAtIndex:[indexPath row]]; 

* EDIT

Соответствующие комментарии: Вы правы. Множество индексов возможно с NSIndexPath.

Если вы знаете, у вас есть несколько индексов (то, что я не стал бы ожидать в UITableViewDelegate) вы можете перебирать индексы:

for (int i = 0; i < [indexPath length]; i++) { 
    NSUInteger index = [indexPath indexAtPosition:i]; 
    // use index to access whatever you want 
} 

EDIT

ПОЖАЛУЙСТА чтения документации и заголовки перед вами спросите в следующий раз. Маленький намек: cmd - НажмитеNSIndexPath приведет вас в свой файл заголовка со всей возможной информацией.

+0

Ваше вступительное предложение отчасти верно. Вы также можете создать 'NSIndexPath' с любым количеством индексов. Я создал древовидное представление, и указательные пути могут иметь любое количество индексов. – rmaddy

+0

FYI - альтернативный способ записи этой первой строки кода: 'id object = self.dataSource [indexPath.row];'. – rmaddy

+1

Исправить. Это альтернативный синтаксис «ObjC». –

0

Objective C

NSInteger currentRow = indexPath.row; 

Swift

let currentRow = self.tableView.indexPathForSelectedRow().row 
Смежные вопросы