我正在开发反馈类型的iPhone应用程序。在那里我因为从其他班级获得价值而陷入困境。假设我有三个视图控制器类“Class-A”,“Class-B”和“Class-C”。我已经为B级和C级创建了代表。
最初我的根是A级。所以从A类,我提出了Class-B,并且通过使用类B.delegate = self,我在Class-A中调用了Class-B委托方法。并且B类和C类之间也没有联系。那么,如果我将从Class-C转到Class-A,那么同样的Class-B委托方法会再次调用吗?
我想在A类中调用的方法是 -
-(void)saveAllVisitOptions:(SignIn *)signIn
{
Store *store1 = [[Store alloc] init];
store1.signINN =[[SignIn alloc] init];
store1.signINN = signIn;
[resultArray replaceObjectAtIndex:indexValue withObject:store1];
[Util setArrayPreference:resultArray forKey:@"Store"];
}
因此,如果我将上述方法使用单例,那么它会正常工作吗? 我已经搜遍了所有但无法找到解决方案。
答案 0 :(得分:0)
您必须定义一些机制来知道控件从Class-C转到Class-A,使用类的共享实例或在NSUserDefaults中保存条目,然后从Class-A触发委托方法。
Singleton (singleton.h)
@property(nonatomic)BOOL isReturningFromClassC;
在 Class-C 中,设置
[singletonInstance setIsReturningFromClassC:YES];
A级
if([singletonInstance setIsReturningFromClassC])
//呼叫代表
答案 1 :(得分:0)
你可以这样做
- (void)someMethodYouCallInClassA
{
// Simple and some may call none efficient way.
// Personally not sure why some call it none efficient.
ClassB *myClassB = [[ClassB alloc] init];
[myClassB someMethodYouCallInClassB];
}
或者你可以使用许多人会说的单身人士。要做到这一点
ClassA.h
@interface ClassA : NSObject
@property (nonatomic, strong) NSData *userData;
+ (ClassA *)sharedInstance;
- (void)myMethodInClassA
@end
ClassA.m
#import ClassA.h
@implementation ClassA
@synthesize userData = _userData;
static ClassA *classASharedInstance = nil;
+ (ClassA *)sharedInstance
{
static dispatch_once_t instanceToken;
dispatch_once(&instanceToken, ^{
classASharedInstance = [[ClassA alloc] init];
});
return classASharedInstance;
}
- (void)myMethodInClassA
{
// Do what it is want
}
@end
然后在你的课堂B中你可以做到
- (void)method....
{
ClassA *myClassA = [ClassA sharedInstance]; // If the instance has already been set then no need to do this again.
[myClassA myMethodInClassA];
}
这将允许您轻松访问classA
的方法和属性。我已将userData
作为共享属性的示例。如果您在一个班级中设置userData
,则可以轻松地在另一个班级中访问该userData
的实例。
如果您有任何疑问,请询问。