UITabBarButton без переключения на другой вид

Кто-нибудь знает способ иметь UITabBarButton, который вместо того, чтобы переходить к другому контроллеру представления, выполняет другую функцию, например. вызвать метод?

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

-РЕДАКТИРОВАТЬ- снимок экрана и фрагмент кода для ясности. Вкладка с надписью Sync - это тот, который я не хочу открывать viewController:

enter image description here

AppDelegate.h:

@interface AppDelegate : UIResponder 

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UIViewController *viewController;

@end

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self.window makeKeyAndVisible];       
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    tabBarController.delegate = (id)self;

   [[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(applicationDidTimeout:) name:kApplicationDidTimeoutNotification object:nil];

    return YES;
}

а также:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

    NSLog(@"vc = %@", viewController);
    return YES;
}
0
nl ja de

1 ответы

Посмотрите на метод UITabBarControllerDelegate :

– tabBarController:shouldSelectViewController:

Если selectViewController == ваша последняя панель вкладок, вернуть NO и выполнить другие действия

РЕДАКТИРОВАТЬ :

Посмотрите на пример, который я сделал:

AppDelegate.h

@interface ISAppDelegate : UIResponder 

@property (strong, nonatomic) UIWindow *window;

@end

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   //Override point for customization after application launch.


    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    tabBarController.delegate = (id)self;

    return YES;
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

   //here check if "viewController" is your last tab controller, then return NO and perform some actions you need
    if (viewController = self.lastTabController) {
       //do some actions
        return NO;
    }

    return YES;
}
1
добавлено
Я тестировал новый проект, и он отлично работает. Я думаю, что теперь это зависит от вашей фактической реализации проекта. Убедитесь, что self.window.rootViewController равен вашему UITabBarController , проверьте также, хорошо ли вы определяете делегат и protocol код>. Для получения дополнительной помощи мне понадобится еще один дополнительный код и, возможно, скриншот вашего раскадровки :)
добавлено автор Yaman, источник
если вы не видите какой-либо журнал, я думаю, что это потому, что делегат неправильно установлен. Вы уверены, что ваш rootViewController является UITabBarController ?
добавлено автор Yaman, источник
Благодарю. Я немного смущен относительно того, где поставить код. Должно ли это быть в AppDelegate?
добавлено автор Robert, источник
Еще раз спасибо. Я попытался реализовать это и ожидал, что инструкции NSLog будут распечатываться всякий раз, когда я выбираю вкладку, но ничего не имеет.
добавлено автор Robert, источник
Я добавил снимок панели вкладок и моего кода appDelegate, если это поможет? знак равно
добавлено автор Robert, источник
Не уверен, нет. Я выбрал TBC в раскадровке и назвал его tabBarController , но я знаю, что что-то пропустил.
добавлено автор Robert, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.