UITabBar приложение и кнопка, которая играет музыку на вкладке - PullRequest
1 голос
/ 22 февраля 2009

У меня есть экземпляр AVAudioPlayer, работающий внутри одной из моих вкладок. Активируется через IBAction.

Я бы хотел, чтобы музыка остановилась, когда пользователь нажимает на другую вкладку.

Как бы я поступил так?

Я пробовал theAudio.stop; в viewDidLoad, но это не сработало.

Ответы [ 3 ]

0 голосов
/ 24 февраля 2009

Подключите UITabBarControllerDelegate к основному виду, затем прослушайте (void)tabBarController:(UITabBarController *)tabBarController didSelectItem:(UITabBarItem *)item

Когда вы получите это событие, найдите игрока в вашей объектной модели и остановите его.

0 голосов
/ 22 июля 2009

Я наткнулся на этот пост, пытаясь ответить на тот же точный вопрос. На всякий случай, если кто-то еще ищет, я наконец-то понял, как это сделать с NSNotificationCenter. По сути, NSNotificationCenter отправляет «широковещательные» сообщения всему приложению. Если «наблюдатель» слушает, как вы можете видеть ниже, вызывается данный метод. Код выглядит так:

В вашем приложении Делегат:

    - (void)applicationDidFinishLaunching:(UIApplication *)application {

    // Add the tab bar controller's current view as a subview of the window
    [window addSubview:tabBarController.view];

    // Make sure you add this so that your tab bar calls its delegate methods
    tabBarController.delegate = self;
}

    // Optional UITabBarControllerDelegate method (this will be commented out by default - uncomment it)

    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
                // Create the NSNotificationCenter
                [[NSNotificationCenter defaultCenter] postNotificationName:@"tabChanged" object:nil];
    }

На ваш взгляд контроллер:

- (void)viewDidLoad {
    [super viewDidLoad];

    // Register an observer to stop audio recording/playing on tab change
    [[NSNotificationCenter defaultCenter] addObserver:self
                          selector:@selector(tabChanged)
                          name:@"tabChanged"
                          object:nil];
}

- (void)tabChanged {
        @"Received Notification!";
        if([player isPlaying]) {
            [player stop];
        }
}
0 голосов
/ 22 февраля 2009

В вашем UITabBarControllerDelegate реализуйте следующий метод;

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

Это вызывается всякий раз, когда пользователь выбирает новый вид в контроллере.

Я думаю, вы также можете переопределить следующий метод в UIViewController, который воспроизводит аудио

-(void) viewDidDisappear:(BOOL)animated
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...