Ios 将NSString从一个类传递到另一个类。(ECSlidingViewController?)
首先,我已经尝试在线搜索解决方案,但没有一个对我有效。我想,由于我使用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
prepareForSegue
方法,因此,我的问题可能需要另一种方法
viewInits
的类,它保存.h
文件中的属性,我希望允许其他类设置并获取它的值。在本例中,属性是一个NSString*navBarTitle
ClassA
中,我有一个表视图:didselectrowatinexpath:
方法,其中
*ViewInits
setNavBarTitle:
设置为[self.MenuRowsArray objectAtIndex:indexPath.row]
的值viewInits.navbartile
现在保存了我想要的值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课程。