2014-11-12 3 views
0

это крах, который я получаю прямо сейчас. Может кто-то, пожалуйста, помогите мне выяснить, как это решить? Это происходит в этой строке UITableViewCell* cell=[_tableView cellForRowAtIndexPath:[_tableView indexPathForRowAtPoint:point]]; Я думал, что если я проверю, является ли indexPath действительным, он разрешит его, но это не так. Любой способ остановить это? Любые советы или предложения приветствуются. Я опубликую то, что я пытался сделать ниже.iOS: Fatal Exception: NSRangeException *** - [__ NSArrayM objectAtIndex:]: индекс 1 за пределами границ [0 .. 0]

NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:point]; 
if (indexPath) { 
UITableViewCell* cell=[_tableView cellForRowAtIndexPath:[_tableView indexPathForRowAtPoint:point]]; 
.... rest of my code 
    } 

ответ

0

В вашем табличном представлении не более одной строки, которую я подозреваю (или нет?).

Как ваше сообщение об ошибке указывает на то, что вы пытаетесь ссылаться на объект с индексом 1, а границы массива равны 0 .. 0.

Если вы выполнения этого перед Tableview инициализируется вам» вам нужно изменить, где вы его выполняете, или, возможно, вы забыли реализовать метод делегата tableView:numberOfRowsInSection:?

0

Как вы сказали в своем вопросе, что ошибка идет в этой линии, это означает, что indexPath держит некоторые ссылки Попробуйте изменить эту строку

if (indexPath) { 
    UITableViewCell* cell=[_tableView cellForRowAtIndexPath:[_tableView indexPathForRowAtPoint:point]]; 
} 

в

if (indexPath) { 
     UITableViewCell* cell=[_tableView cellForRowAtIndexPath:indexPath]; 
    } 

Но я подозреваю, что вы не имеют более одного элемента в вашем представлении таблицы.

2

Вы можете перезагрузить представление таблицы перед инициализацией массива, или может быть ваш массив пуст, когда вы его используете!

Как при использовании:

NSString *xyz = [self.your_array objectAtIndex:indexPath.row]; 

в cellForRowAtIndexPath, попробуйте fllowing код, который обыкновение врезаться ваше приложение!

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"xyz_cell"; 
long nodeCount = [self.your_array count]; 

if (nodeCount == 0 && indexPath.row == 0) 
{ 
    Home_CellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[Home_CellTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
             reuseIdentifier:CellIdentifier] ; 
     cell.lbl.textAlignment = NSTextAlignmentCenter; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
    cell.lbl.text = @"No Posts yet !"; 

    return cell; 
} 


else{ 

Home_CellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

if (cell == nil) { 
    cell = [[Home_CellTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} // Your Code Goes HERE .... NSString *xyz = [self.your_array objectAtIndex:indexPath.row]; } 

поэтому, для пустого массива он не найдет значение для ключевого, и ваше приложение не сработает!

Надеюсь, это поможет,

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

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