我正在尝试以编程方式激活第二个选项卡(secondViewController)中的按钮以将其打印在控制台上:“按下第二个视图按钮”。问题是,我试图通过按下选项卡栏控制器第一个选项卡上的按钮来执行此操作,然后在加载第二个视图控制器之前执行此操作。在Xcode中选择新项目时,我使用标准的“ Tabbed App”模板创建了此标签栏项目。因此,将使用情节提要创建选项卡栏。
我正在使用NSNotification将数据从第一个选项卡发送到第二个选项卡。如果选择并加载第二个选项卡,则此方法效果很好。当按下第一个选项卡视图控制器上的按钮时,它将打印。我要解决的问题是在选择第二个选项卡之前在应用程序开始运行时执行此操作。我想以编程方式加载第二个标签栏视图控制器,然后再选择它。
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
我想通过按第一个视图控制器上的第一个按钮来查看何时首次将应用程序加载到控制台以显示“第二个视图按钮按下”。我想在选择并加载第二个View Controller之前看到此信息,并想以编程方式加载第二个View Controller而不在应用程序加载时选择它,以便在按下第一个按钮时将“控制台。