Ios 将NSString从一个类传递到另一个类。(ECSlidingViewController?)

Ios 将NSString从一个类传递到另一个类。(ECSlidingViewController?),ios,objective-c,nsstring,parameter-passing,ecslidingviewcontroller,Ios,Objective C,Nsstring,Parameter Passing,Ecslidingviewcontroller,首先,我已经尝试在线搜索解决方案,但没有一个对我有效。我想,由于我使用ECSlidingViewController在应用程序中导航,我无法使用prepareForSegue方法,因此,我的问题可能需要另一种方法 我有一个名为viewInits的类,它保存.h文件中的属性,我希望允许其他类设置并获取它的值。在本例中,属性是一个NSString*navBarTitle 在ClassA中,我有一个表视图:didselectrowatinexpath:方法,其中 创建ViewInits类对象-*Vie

首先,我已经尝试在线搜索解决方案,但没有一个对我有效。我想,由于我使用ECSlidingViewController在应用程序中导航,我无法使用
prepareForSegue
方法,因此,我的问题可能需要另一种方法

  • 我有一个名为
    viewInits
    的类,它保存
    .h
    文件中的属性,我希望允许其他类设置并获取它的值。在本例中,属性是一个NSString
    *navBarTitle

  • ClassA
    中,我有一个
    表视图:didselectrowatinexpath:
    方法,其中

  • 创建ViewInits类对象-
    *ViewInits
  • 然后,我将
    setNavBarTitle:
    设置为
    [self.MenuRowsArray objectAtIndex:indexPath.row]
    的值
  • 在下一行中,我做了一个NSLog检查,是的,
    viewInits.navbartile
    现在保存了我想要的值
  • 在ClassB的
    viewDidloadMethod
    中,类似地,我创建了一个
    ViewInits
    对象-
    *ViewInits
    ,并对
    ViewInits.navBarTitle
    进行了NSLog检查。但它返回
    (null)
    这里似乎有什么问题?


  • 下面是我如何尝试传递NSString的代码。我做错了什么

    viewInit.h

    @interface ViewInits : NSObject
    @property (strong, nonatomic) NSString *navBarTitle;
    @end
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
    
        // *========== ECSlidingViewController ==========*
        self.view.layer.shadowOpacity = 0.75f;
        self.view.layer.shadowRadius = 10.0f;
        self.view.layer.shadowColor = [UIColor blackColor].CGColor;
        if (![self.slidingViewController.underLeftViewController isKindOfClass:[MenuViewController class]])
        {
            self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
        }
        [self.view addGestureRecognizer:self.slidingViewController.panGesture];
        // *========== ECSlidingViewController ==========*
    
    
        ViewInits *viewInits = [[ViewInits alloc] init]; // Create ViewInit class object
        self.navBar.topItem.title = viewInits.navBarTitle;
        NSLog(@"%@", viewInits.navBarTitle); // <<--- This always ends up null. What's wrong?
    }
    
    ClassA.m
    tableView:didSelectRowAtIndexPath:method:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSString *identifier = [self.MenuRowsArray objectAtIndex:indexPath.row];
        UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
    
        // *---------- Assign identifier to NSString viewInits ----------*
        ViewInits *viewInits = [[ViewInits alloc] init];
        [viewInits setNavBarTitle:identifier];
        NSLog(@"%@", viewInits.navBarTitle);
        // *---------- Assign identifier to NSString viewInits ----------*
    
        [self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^
        {
            CGRect frame = self.slidingViewController.topViewController.view.frame;
            self.slidingViewController.topViewController = newTopViewController;
            self.slidingViewController.topViewController.view.frame = frame;
            [self.slidingViewController resetTopView];
        }];
    }
    
    ClassB.m

    @interface ViewInits : NSObject
    @property (strong, nonatomic) NSString *navBarTitle;
    @end
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
    
        // *========== ECSlidingViewController ==========*
        self.view.layer.shadowOpacity = 0.75f;
        self.view.layer.shadowRadius = 10.0f;
        self.view.layer.shadowColor = [UIColor blackColor].CGColor;
        if (![self.slidingViewController.underLeftViewController isKindOfClass:[MenuViewController class]])
        {
            self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
        }
        [self.view addGestureRecognizer:self.slidingViewController.panGesture];
        // *========== ECSlidingViewController ==========*
    
    
        ViewInits *viewInits = [[ViewInits alloc] init]; // Create ViewInit class object
        self.navBar.topItem.title = viewInits.navBarTitle;
        NSLog(@"%@", viewInits.navBarTitle); // <<--- This always ends up null. What's wrong?
    }
    
    -(void)viewDidLoad
    {
    [超级视图下载];
    //加载视图后执行任何其他设置。
    //*==========ECSlidingViewController==========*
    self.view.layer.shadowOpacity=0.75f;
    self.view.layer.shadowRadius=10.0f;
    self.view.layer.shadowColor=[UIColor blackColor].CGColor;
    如果(![self.slidingViewController.undereftviewcontroller是类:[MenuViewController类]])
    {
    self.slidingViewController.undereftviewcontroller=[self.storyboard instanceeviewcontrollerwhiteIdentifier:@“Menu”];
    }
    [self.view addgesturecognizer:self.slidingViewController.panGesture];
    //*==========ECSlidingViewController==========*
    ViewInits*ViewInits=[[ViewInits alloc]init];//创建ViewInit类对象
    self.navBar.topItem.title=viewInits.navbartile;
    
    NSLog(@“%@”,viewInits.navBarTitle);/如果您想使用
    ViewInit
    作为设置的公共存储,它应该是一个单实例,以便应用程序中的所有其他实例都可以获得它。当前,您每次想使用它时都会创建一个新实例,因此新实例没有您以前的任何设置


    除此之外,我知道滑动视图控制器是什么,我询问它是因为您可能没有正确使用它。如果您有一个视图控制器,它是当前的俯视图控制器,并且它更改了俯视图控制器(a类可能正在这样做,不确定)然后引用
    self.slidingViewController
    将在代码中部分停止工作。

    如果要使用
    ViewInit
    作为设置的公共存储,它应该是一个单实例,以便应用程序中的所有其他实例都可以获得它。当前,您每次要使用它时都会创建一个新实例,因此新实例没有您以前的任何设置


    除此之外,我知道滑动视图控制器是什么,我询问它是因为您可能没有正确使用它。如果您有一个视图控制器,它是当前的俯视图控制器,并且它更改了俯视图控制器(a类可能正在这样做,不确定)然后参考
    self.slidingViewController
    将在部分代码中停止工作。

    滑动视图控制器中有哪些类以及在哪里(前/左/右)?描述每个类及其应扮演的角色(A、B、ViewInits、菜单)您的代码似乎对滑动控制器的用法以及对象的“属性”感到困惑。@Wain slidingViewController是库提供的一个类。这(我认为)不是这里的主要问题。
    ViewInit
    是一个具有属性navBarTitle的类,我希望
    ClassA
    设置它的值,而
    ClassB
    检索ClassA设置的值。但是当我试图在
    ClassB
    中使用NSLog打印navBarTitle时,它总是返回
    (null)
    。滑动视图控制器中有哪些类以及在哪里(前/左/右)?描述每个类及其应扮演的角色(A、B、ViewInits、菜单)您的代码似乎对滑动控制器的用法以及对象的“属性”感到困惑。@Wain slidingViewController是库提供的一个类。这(我认为)不是这里的主要问题。
    ViewInit
    是一个具有属性navBarTitle的类,我希望
    ClassA
    设置它的值,而
    ClassB
    检索ClassA设置的值。但是当我试图在
    ClassB
    中使用NSLog打印navBarTitle时,它总是返回
    (null)
    .Thank you@Wain.
    singleton
    是一个关键词,它为我指明了正确的方向。对于来到这里的其他人,我了解了singleton课程。Thank you@Wain.
    singleton
    是一个关键词,它为我指明了正确的方向。对于来到这里的其他人,我了解了singleton课程。