Я хочу передать данные и перейти от Search VC (индекс вкладки 4) к Classes VC (индекс вкладки 2), когда я нажимаю кнопку поиска. Search VC встроен в Tab View Controller. Classes VC встроен как в Tab View Controller, так и в Navigation Controller. См. Прилагаемую картинку.

Pics

Я пробовал использовать seague для следующего кода, но потерял Tab Bar

Предполагая, что я создал серию под названием SearchToClass от Search VC до Classes VC

#import "Search.h"    
#import "Classes.h"
#import "ClassNavigationController.h"

@interface Search(){

    NSString *sURL;
}

@end

@implementation Search

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

- (IBAction)btnSearch:(UIButton *)sender {

NSLog(@"This is the slider %@", lblStart.text);
sURL = @"&Start=";
sURL = [sURL stringByAppendingString:sStartTime];
sURL = [sURL stringByAppendingString:@"&End="];
sURL = [sURL stringByAppendingString:sEndTime];

[self performSegueWithIdentifier:@"SearhToClass" sender:self];

//======== I have also tried the following but couldn't pass the data and I lost the Tab Bar as well======================================
//ClassNavigationController *fromSearch =  (ClassNavigationController*)[storyboard instantiateViewControllerWithIdentifier:@"Classes"];
//[fromSearch setModalPresentationStyle:UIModalPresentationFullScreen];
//[self presentViewController:fromSearch animated:NO completion:nil];
//===================================================================
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    Classes *target = segue.destinationViewController;

    if ([segue.identifier isEqualToString:@"SearchToClass"]) {
    
        NSLog(@" To ClassesDet sURL : %@", sURL);
        target.urlFromSearch = sURL;
    }
 }
 @end
0
Hanz Cheah 17 Апр 2018 в 11:46

1 ответ

Лучший ответ

Вот что ты можешь сделать. Если вы хотите, чтобы данные передавались из поиска vc в классы vc.

  1. Добавить наблюдателя уведомлений в классы vc
NotificationCenter.default
                .addObserver(forName:NSNotification
                    .Name(rawValue: "testKey"),
                             object:nil, queue:nil, using: yourMethodToBeCalled) //set notification observer
  1. Когда вы искали элемент и хотите передать его классам vc
NotificationCenter.default
            .post(name: NSNotification
                .Name(rawValue: "testKey"),
                  object: nil, userInfo: ["myData": true, "myList": myList])
  1. Перейти на вкладку
    self.tabBarController?.selectedIndex = 2

    Примечание. При использовании контроллера панели вкладок переходить не нужно

0
Moaz Khan 17 Апр 2018 в 09:00