Кнопка «Назад» в моем приложении, когда она нажата, корректно возвращает меня к главному виду / экрану, затем приложение вылетает, экран отладки дает мне следующее:
Завершение работы приложения из-за невыполненияисключение 'NSInvalidArgumentException', причина: '- [RLMRealmNotificationToken invalidate]: нераспознанный селектор, отправленный экземпляру 0x600003bd57e0
Я прошел по коду с помощью Debug и вижу последнюю строку кода, выполненную до его сбоя.
В коде я вижу эту ошибку «Поток 1: сигнал SIGABRT» и прочитал здесь, что это, вероятно, связано с тем, что IBAction не работает должным образом на моей кнопке «Назад», но не может выяснить, где проблема в коде,Мой проект не показывает кнопку «Назад» на раскадровке, так как она закодирована.
Вот код, в котором определяется мой CustomBackButton.
#import "ViewControllerHelper.h"
#import "ProfileRealm.h"
@interface ViewControllerHelper ()
- (void)setCustomTitle;
- (void)setCustomBackButton;
- (void)profilesAction:(id)sender;
@end
@implementation ViewControllerHelper
- (id)initWithViewController:(UIViewController *)viewController andProfile:(ProfileRealm *)profile {
self = [super init];
if(self) {
_viewController = viewController;
_profile = profile;
[self setCustomTitle];
[self setCustomBackButton];
}
return self;
}
- (void)setCustomTitle {
if (_profile == nil)
return;
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:_profile.name];
UIFont *font1 = [UIFont boldSystemFontOfSize:15.0];
[string addAttribute:NSFontAttributeName value:font1 range:NSMakeRange(0, string.length)];
[string appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n"]];
NSUInteger start = string.length;
[string appendAttributedString:[[NSMutableAttributedString alloc] initWithString:_profile.friendlyName]];
UIFont *font = [UIFont boldSystemFontOfSize:15.0];
[string addAttribute:NSFontAttributeName value:font range:NSMakeRange(start, string.length - start)];
NSMutableParagraphStyle *paragrapStyle = [[NSMutableParagraphStyle alloc] init];
paragrapStyle.alignment = NSTextAlignmentCenter;
[string addAttribute:NSParagraphStyleAttributeName value:paragrapStyle range:NSMakeRange(0, string.length)];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,44,44)];
[titleLabel setAttributedText:string];
[titleLabel setNumberOfLines:2];
// [titleLabel setTextColor:[UIColor whiteColor]];
_viewController.navigationItem.titleView = titleLabel;
}
- (void)setCustomBackButton {
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithImage: [UIImage imageNamed:@"monkeys"]
style:UIBarButtonItemStylePlain
target:self action:@selector(profilesAction:)];
_viewController.navigationItem.leftBarButtonItem = item;
}
- (void)profilesAction:(id)sender {
//MARK - App Crashes after next line is executed
[_viewController.tabBarController.navigationController popViewControllerAnimated:YES];
}
@end
//Post Crash, I get a SIGABRT error in the main file
// Here is that code:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}