Программно нажимая кнопку UITabBar в XCode

Если Вы, приложение является приложением Windows GUI затем с помощью кода ниже, чтобы сделать ожидание, не идеальны, поскольку сообщения для приложения не будут получать обработку. Пользователю будет похоже, что Ваше приложение зависло.

WaitForSingleObject(&processInfo.hProcess, INFINITE)

Что-то как непротестированный код ниже мог бы быть лучше, поскольку это будет продолжать обрабатывать очередь сообщений окон, и Ваше приложение останется быстро реагирующим:

//-- wait for the process to finish
while (true)
{
  //-- see if the task has terminated
  DWORD dwExitCode = WaitForSingleObject(ProcessInfo.hProcess, 0);

  if (   (dwExitCode == WAIT_FAILED   )
      || (dwExitCode == WAIT_OBJECT_0 )
      || (dwExitCode == WAIT_ABANDONED) )
  {
    DWORD dwExitCode;

    //-- get the process exit code
    GetExitCodeProcess(ProcessInfo.hProcess, &dwExitCode);

    //-- the task has ended so close the handle
    CloseHandle(ProcessInfo.hThread);
    CloseHandle(ProcessInfo.hProcess);

    //-- save the exit code
    lExitCode = dwExitCode;

    return;
  }
  else
  {
    //-- see if there are any message that need to be processed
    while (PeekMessage(&message.msg, 0, 0, 0, PM_NOREMOVE))
    {
      if (message.msg.message == WM_QUIT)
      {
        return;
      }

      //-- process the message queue
      if (GetMessage(&message.msg, 0, 0, 0))
      {
        //-- process the message
        TranslateMessage(&pMessage->msg);
        DispatchMessage(&pMessage->msg);
      }
    }
  }
}
12
задан Magic Bullet Dave 26 November 2009 в 19:56
поделиться

3 ответа

[myTabBarController setSelectedIndex:index]

РЕДАКТИРОВАТЬ: Отвечая на вопрос части 2 из комментария:

Вы можете определить метод в AppDelegate для переключения на другую вкладку.

И вы можете получить appdelegate откуда угодно и отправить сообщение .. что-то вроде:

 MyAppDelegate *appDelegate = (MyAppDelegate*) [[UIApplication sharedApplication] delegate];
 [appDelegate SwitchToTab:index]
23
ответ дан 2 December 2019 в 04:02
поделиться

альтернативно...

[self.parentViewController.tabBarController setSelectedIndex:3];
11
ответ дан 2 December 2019 в 04:02
поделиться

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

В любом случае, я надеюсь, что это кому-то поможет:

Я делал то, что сказал Пракаш, и ничего не происходило. Это потому, что для получения указателя на делегата моего приложения я делал следующее:

AppDelegate_Phone *appDelegate = [[AppDelegate_Phone alloc] init];

Когда мне следовало делать это:

AppDelegate_Phone *appDelegate = (AppDelegate_Phone *) [[UIApplication sharedApplication] delegate];

Ошибка новичка.

3
ответ дан 2 December 2019 в 04:02
поделиться