Xcode: Почему я получаю сообщение SIGABRT, используя presentModalViewcontroller? - PullRequest
2 голосов
/ 19 сентября 2011

Я хочу переключиться на другой viewController. У меня есть UIButton на мой взгляд, UIButton имеют UILongPressGestureRecognizer с использованием этого кода:

UILongPressGestureRecognizer *buttonLongPressRecognizer;
buttonLongPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(LoadButtonSettings:)];

buttonLongPressRecognizer.numberOfTouchesRequired = 1;
buttonLongPressRecognizer.minimumPressDuration = 2.0;

[NewButton addGestureRecognizer:buttonLongPressRecognizer];

Действие, которое я использую для переключения viewControllers, таково:

- (IBAction)LoadButtonSettings:(id)sender {

[ButtonSettingsViewController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];

[self presentViewController:ButtonSettingsViewController animated:YES completion:NULL];

}

Проблема в том, что когда я долго нажимаю на кнопку, мое приложение вылетает и выдает ошибку SIGABRT. Как ни странно, это происходит только на моем iPhone, а не на симуляторе.

Я также пытался использовать

    [self presentModalViewController:ButtonSettingsViewController animated:YES];

и получил ту же проблему. Как я знаю, SIGABRT означает, что есть проблема с памятью, которую я не понимаю, так как автоматический счетчик ссылок включен.

Есть идеи, как это исправить?

Заранее спасибо:)

Ответы [ 2 ]

3 голосов
/ 19 сентября 2011

Если ButtonSettingsViewController - это тип контроллера представления, вам необходимо сначала его инициализировать:

- (IBAction)LoadButtonSettings:(id)sender {
    // init & alloc - Replace with your custom view controllers initialization method (if applicabale)
    ButtonSettingsViewController *viewController = [[ButtonSettingsViewController alloc] initWithNibNamed:@"ButtonSettingsViewController" bundle:nil];

    [viewController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [self presentViewController:viewController animated:YES completion:NULL];
}
2 голосов
/ 19 сентября 2011

presentModalViewController: animated: требуется объект контроллера представления. Вы передаете ему класс (ButtonSettingsViewController). Сначала создайте экземпляр объекта контроллера представления:

ButtonSettingsViewController *viewControllerObject = [[ButtonSettingsViewController alloc] initWithNibName:@"ButtonSettingsViewController" bundle:nil];

Затем установите свойство modalTransitionStyle этого объекта контроллера представления:

viewControllerObject.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

Тогда представь это:

[self presentModalViewController:viewControllerObject animated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...