2015-10-20 3 views
8

Я новичок в разработке iOS. Я пытался отобразить UIAlertController при нажатии кнопки (Раскадровка пуст, есть только одна кнопка в раскадровке), используя ниже кодXCODE iphone 6 plus и 6s plus показывает предупреждение при отображении UIAlertViewController

@IBAction func showAlert(sender: UIBarButtonItem) { 
    let alert = UIAlertController(
    title: "Create new", 
    message: "Hi", 
    preferredStyle: UIAlertControllerStyle.Alert 
) 

    let createAction = UIAlertAction(title: "Ok", style: .Default, handler: nil) 
    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) 

    alert.addAction(createAction) 
    alert.addAction(cancelAction) 
    alert.addTextFieldWithConfigurationHandler { 
    $0.placeholder = "Test placeholder" 
    } 

    presentViewController(alert, animated: true, completion: nil) 
} 

Iphone 5, 5s, 6, 6с не показывать предупреждения, однако iphone 6plus и 6s плюс показывает предупреждение

2015-10-20 22: 38: 54.007 TestApp [3128: 48601] поведение UICollectionViewFlowLayout не определен, так как: 2015-10-20 22:38 : 54.008 TestApp [3128: 48601] высота элемента должна быть меньше, чем высота UICollectionView за вычетом секций вставки вверх и нижние значения , минус верхние и нижние значения содержимого. 2015-10-20 22: 38: 54,008 TestApp [3128: 48601] Соответствующий экземпляр UICollectionViewFlowLayout является < _UIAlertControllerCollectionViewFlowLayout: 0x7fd6b8582d90>, и он прикреплен к; layer =; contentOffset: {0, 0}; contentSize: {0, 0}> макет коллекции: < _UIAlertControllerCollectionViewFlowLayout: 0x7fd6b8582d90>.

Если я удаляю текстовое поле на UIAlertController или удаляю 2 кнопки (сохраняя текстовое поле), оно не отображает предупреждения. Любое объяснение, почему это происходит? Как исправить предупреждение?

+0

Это может быть глупо, но попробуйте добавить текстовое поле до двух действий. – rmaddy

+1

@rmaddy все еще показывает предупреждение. В любом случае я просто попробовал добавить 2 текстовых поля и не показывать предупреждения на всех платформах, я добавил его до и после инструкций добавления двух действий ('Default' и' Cancel') –

+2

Отправить ошибку для Apple. Включите простое тестовое приложение, которое демонстрирует проблему. – rmaddy

ответ

18

попробовать:

yourAlertController.view.setNeedsLayout() 

незадолго до представления его presentViewController:

редактирования: Я представил эту ошибку в Apple,

+1

Это избавит вас от предупреждения - мы все равно должны сообщать об ошибке в apple, поскольку эта строка не нужна. – Sidetalker

+1

@ Sidetalker Сделал это! –

+0

Это было! Спасибо :) – Sidetalker

0

Я также имел тот же вопрос в моем экране только iphon6 плюс экран. Пожалуйста, проверьте, если вы не пропуская пустое название, если название пуст, передать его ноль, как:

UIAlertController *confirmAlert = [UIAlertController alertControllerWithTitle:nil message:displayMessage preferredStyle:UIAlertControllerStyleAlert]; 

вместо

UIAlertController *confirmAlert = [UIAlertController alertControllerWithTitle:@"" message:displayMessage preferredStyle:UIAlertControllerStyleAlert]; 

это фиксированная моя проблема. Удачи ..