2016-02-25 1 views
0

Я разрабатываю приложение, используя Xamarin + Mvvmcross. В настоящее время он отлично работает на iPad Mini, iPad 2,3, iPhone 5S и 6. Странно одна из просмотров рушится на iPhone 4S под управлением iOS 7.1. Все тесты проводились с использованием реальных устройств.Приложение DequeueReusableCell падает только на iPhone 4S

Вот авария:

https://gist.github.com/nunohorta/2b84245899e8c0daa116

Код для исходной таблицы это одна:

public class MessagesTableSource : MvxStandardTableViewSource 
{ 
    UITableView _tableview; 
    MessagesView _parent; 
    UILabel messageLabel; 

    private static readonly NSString MessageCellIdentifier = new NSString("MessageCell"); 

    public MessagesTableSource(UITableView tableView, MessagesView parent) : base(tableView) 
    { 
     _tableview = tableView; 
     _parent = parent; 
    } 

    public override nint RowsInSection (UITableView tableview, nint section) 
    { 
     return _parent.ViewModel.Messages != null ? _parent.ViewModel.Messages.Count : 0; 
    } 

    public override nint NumberOfSections (UITableView tableView) 
    { 
     if (_parent.ViewModel.Messages != null && _parent.ViewModel.Messages.Count > 0) { 
      return 1; 
     } else { 
      /* 
      * Custom View here 
      * 
      * */ 

      return 0; 
     } 
    } 


    protected override UITableViewCell GetOrCreateCellFor (UITableView tableView, NSIndexPath indexPath, object item) 
    { 
     var cell = (MessageCell)tableView.DequeueReusableCell("MessageCell"); 
     return cell; 
    } 
} 

Я также регистрации пользовательского класса, как это на viewDidLoad:

tableView.RegisterNibForCellReuse(UINib.FromName("MessageCell", NSBundle.MainBundle), MessageCellIdentifier); 

Я понятия не имею, почему это сбой только для одного разработчика лед ... Крушение, похоже, происходит на UIKit/CoreFoundation.

+0

FIXED> Похоже, по какой-то причине у меня был атрибут runtime типа integer со значением 5, определенным в моем файле xib. И по какой-то магической причине iOS падает на 7.1, но не на других. – nhenrique

ответ

1



Вы, возможно, потребуется зарегистрировать MessageCell СИБ для пользовательских MessageCell класса, как в поле зрения сделал метод загрузки. Потому что в первый раз он не смог найти ячейку с идентификатором.

tableView.registerNib(UINib(nibName: "CustomOneCell", bundle: nil), forCellReuseIdentifier: "CustomCellOne") 


Для DEQUE ячейки с идентификатором

tableView.dequeueReusableCellWithIdentifier("CustomCellOne", forIndexPath: indexPath) as! CustomOneCell 


Я надеюсь, что это может помочь решить проблему.

+0

жаль, что я забыл добавить это выше. Я уже делаю это, иначе он будет аварийно завершен для всех устройств/iOS – nhenrique

+0

Включите вышеуказанный недостающий код. проверить, назначил ли nib класс и идентификатор? Пожалуйста, дайте мне знать, это проблема разрешения проблемы. –

+0

Я боюсь, что это все равно происходит с такими изменениями:/ – nhenrique