我想制作一个方法并将其调用到许多视图控制器。帮我?我还想在固定视图上分配UIView或按钮或标签。
这是我的代码
·H
#import <UIKit/UIKit.h>
@interface UIOnlyView : UIView
+ (UIOnlyView *) sharedGlobalClass;
-(void)yourMethod;
@end
的.m
+(UIOnlyView *)sharedGlobalClass {
static dispatch_once_t pred;
static id shared = nil;
dispatch_once(&pred, ^{
shared = [[super alloc] init];
});
return shared;
}
-(void)yourMethod{
NSLog(@"Method called");
UIView *customView=[[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
customView.backgroundColor=[UIColor redColor];
[self addSubview:customView];
}
但是我的自定义视图没有在我的视图控制器类中显示,我调用了这个方法。
答案 0 :(得分:0)
使用GlobalClass
这样的
创建一个类NSObject
,其类型为+ (GlobalClass *) sharedGlobalClass;
- (void) yourMethod : (UIView *) view;
在.h类中创建此方法
+ (GlobalClass *) sharedGlobalClass {
static dispatch_once_t pred;
static id shared = nil;
dispatch_once(&pred, ^{
shared = [[super alloc] init];
});
return shared;
}
- (void) yourMethod : (UIView *) view {
UIView *customView=[[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
customView.backgroundColor=[UIColor redColor];
[view addSubview:customView];
}
现在在.m类
[[GlobalClass sharedGlobalClass] yourMethod:self.view];
现在您可以像这样调用此方法
#import "GlobalClass.h"
来自任何一个ViewController,你只需要导入
AssemblyLoadContext.Default.LoadFromAssemblyPath
答案 1 :(得分:0)
您可以将singleton类用于此目的:
创建一个NSObject类:
import <foundation/Foundation.h>
@interface MyManager : NSObject {
NSString *someProperty;
}
@property (nonatomic, retain) NSString *someProperty;
+ (id)sharedManager;
@end
在您的.m文件中:
@implementation MyManager
@synthesize someProperty;
+ (id)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
您可以在所有类中全局使用someProperty。 它定义了一个静态变量,只在sharedManager中初始化一次。
了解更多信息:http://www.galloway.me.uk/tutorials/singleton-classes/ https://code.tutsplus.com/articles/design-patterns-singletons--cms-23886
答案 2 :(得分:0)
在目标C中:
@interface OUCSCalendarManager ()
- (void)globalMethod;
@end
@implementation OUCSCSharedManager
/// ------------------------------------------------------------------------
/// Singleton Method
///--------------------------------------------------------------------------
+(instancetype)SharedManager{
@synchronized(self) {
static OUCSCalendarManager *sharedInstance = nil;
static dispatch_once_t pred;
@synchronized (self) {
dispatch_once(&pred, ^{
sharedInstance = [[OUCSCalendarManager alloc]init];
});
return sharedInstance;
}
}
}
- (void)globalMethod {
}
}
要从项目中的任何位置调用该方法,您需要创建单例对象并调用此方法
[[OUCSCalendarManager calendarSharedManager]globalMethod];
如果您遇到任何问题,请告诉我。
答案 3 :(得分:0)
<强> ClassA.h 强>
#import "ClassA.h"
@interface ClassA : NSObject
+(id)sharedInstance;
-(void)customMethod;
@end
现在实施 ClassA.m
#import "ClassA.h"
@implementation ClassA
+(id)sharedInstance
{
static ClassA *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[ClassA alloc] init];
});
return instance;
}
-(void)customMethod
{
//Method body
}
现在在其他viewcontrollers中导入头文件并像
一样使用它[[ClassA sharedInstance] customMethod{}];