Как загрузить контроллер панели вкладок перед выбором элемента панели вкладок? - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь программно активировать кнопку на 2-й вкладке (secondViewController), чтобы напечатать эту консоль: «2nd View Button Press». Проблема в том, что я пытаюсь сделать это, нажав кнопку на первой вкладке контроллера панели вкладок, и делаю это перед загрузкой контроллера второго представления. Я создал этот проект панели вкладок, используя стандартный шаблон «Приложение с вкладками» при выборе нового проекта в XCode. Таким образом, панель вкладок создается с раскадровкой.

Я отправляю данные с первой вкладки на вторую, используя NSNotification. Это хорошо работает, если вторая вкладка выбрана и загружена. Он будет печататься при нажатии кнопки на первом контроллере представления вкладок. Проблема, которую я пытаюсь решить, состоит в том, чтобы сделать это, когда приложение запускается, прежде чем выбрать 2-ю вкладку. Я хотел бы программно загрузить 2-й контроллер представления панели вкладок перед его выбором.

FirstViewController

#import "FirstViewController.h"
#import "SecondViewController.h"

@interface FirstViewController ()
@property (weak, nonatomic) IBOutlet UIButton *firstButton;

@end

@implementation FirstViewController

- (void)viewDidLoad {

    [super viewDidLoad];
}

- (IBAction)firstButtonPress:(id)sender {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"activateSecondViewButton" object:self];
}

@end

SecondViewController

#import "SecondViewController.h"

@interface SecondViewController ()
@property (weak, nonatomic) IBOutlet UIButton *secondViewButton;

@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];

    [[NSNotificationCenter  defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:@"activateSecondViewButton" object:nil];

    if(!self)
    {
        return nil;
    }
    return self;
}

-(void) receiveNotification:(NSNotification *) notification
{
    if ([[notification name] isEqualToString:@"activateSecondViewButton"] )
    {
        [_secondViewButton sendActionsForControlEvents: UIControlEventTouchUpInside];
    }
}

- (IBAction)secondViewButtonPress:(id)sender {
    NSLog(@"2nd View Button Press");
}

@end

Я хотел бы видеть, когда приложение впервые загружается для отображения на консоли «2nd View Button Press», нажав первую кнопку на первом контроллере представления. Я хотел бы увидеть это перед выбором и загрузкой контроллера второго вида и хотел бы программно загрузить контроллер второго вида, не выбирая его при загрузке приложения, чтобы при нажатии первой кнопки отображалось «Нажатие кнопки 2-го вида» в консоль.

...