Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在iphone应用程序中使用singleton?_Objective C_Ios4_Singleton_Themes_Ios 4.2 - Fatal编程技术网

Objective c 如何在iphone应用程序中使用singleton?

Objective c 如何在iphone应用程序中使用singleton?,objective-c,ios4,singleton,themes,ios-4.2,Objective C,Ios4,Singleton,Themes,Ios 4.2,大家好,我是iphone开发的新手 我的应用程序中有5个主题 我有每个主题的静态图像(标签,按钮和所有),但我不知道如何应用或改变整个应用程序的新主题。我通读了singleton,但不明白如何使用它来更改整个应用程序的图像 是否有其他方法将主题应用到应用程序中,或者单例是唯一的方法,如果是,那么我如何使用它 编辑:这是我的singleton类代码,但我找不到任何方法来实现各种主题的图像 #import "MyClass.h" @implementation MyClass + (MyC

大家好,我是iphone开发的新手

我的应用程序中有5个主题

我有每个主题的静态图像(标签,按钮和所有),但我不知道如何应用或改变整个应用程序的新主题。我通读了singleton,但不明白如何使用它来更改整个应用程序的图像

是否有其他方法将主题应用到应用程序中,或者单例是唯一的方法,如果是,那么我如何使用它

编辑:这是我的singleton类代码,但我找不到任何方法来实现各种主题的图像

#import "MyClass.h"




@implementation MyClass

+ (MyClass *)sharedInstance
{
    static MyClass *instance;
    @synchronized(self)
    {
    if(!instance)
    {
        instance = [[MyClass alloc] init];
    }
    }

return instance;
}

您应该查看iOS5中的UIAppearance代理。对于早期版本的singleton方法,您可以请求对singleton进行外观更改,从而更改其各种图像,然后发送通知(NSNotification),通知希望相应更新其接口的任何相关方。或者,您可以在singleton属性上设置键值观察者(KVO),以便在其中一个属性更改时自动通知它们


演示如何实现单例。这只是一种从任何地方访问同一类实例的方法。是一个链接,指向关于单例设计模式的讨论以及一个更为复杂的“纯”单例实现。

如果您想更改图像,请单击以下代码。否则,如果要动态更改它们,请使用带有NSTimer委托方法的“动作中的代码”方法

Drag and drop some images in bundle and pass their names to array.

singleton .h file
#import <Foundation/Foundation.h>

@interface SingleTon : NSObject
{

}

+(SingleTon *) createSingleTon;

-(NSString *) returnImage:(NSString *) imageIs;
@end



singleton .m file
@implementation SingleTon

+(SingleTon *) createSingleTon
{
    static SingleTon *single= nil;
    if (single == nil) {

        single = [[SingleTon alloc] init];
    }
    return single;
}

-(NSString *) returnImage:(NSString  *) imageIs
{
    return imageIs;
}
@end



 viewcontroller .h file
    #import <UIKit/UIKit.h>
    #import "SingleTon.h"
    @interface ViewController : UIViewController<UITextFieldDelegate>
    {
        SingleTon *sing;
        IBOutlet UIImageView *displayImage;
       // connect this outlet imageview in xib.
        NSArray *imagesArray;
        int i;

    }
    -(IBAction)changeImage:(id)sender;
    @end
拖放捆绑中的一些图像,并将它们的名称传递给数组。
singleton.h文件
#进口
@接口单例:NSObject
{
}
+(SingleTon*)创建SingleTon;
-(NSString*)returnImage:(NSString*)imageIs;
@结束
singleton.m文件
@实现单例
+(单例*)创建单例
{
静态单态*single=nil;
如果(单个==零){
single=[[SingleTon alloc]init];
}
返回单;
}
-(NSString*)returnImage:(NSString*)imageIs
{
返回图像;
}
@结束
viewcontroller.h文件
#进口
#导入“SingleTon.h”
@界面ViewController:UIViewController
{
独生子女*唱歌;
IBUIImageView*显示图像;
//在xib中连接此插座图像视图。
NSArray*图像sarray;
int i;
}
-(iAction)changeImage:(id)发送方;
@结束
viewcontroller.m文件

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    imagesArray = [[NSArray alloc] initWithObjects:@"images.jpg",@"images1.jpg",@"images2.jpg",@"images4.jpg", nil];
    i = 0;
    sing = [SingleTon createSingleTon];
    // Do any additional setup after loading the view, typically from a nib.
}

-(IBAction)changeImage:(id)sender
{

    if (i<[imagesArray count]) {
        displayImage.image = [UIImage imageNamed:[sing returnImage:[imagesArray objectAtIndex:i]]];

    }
    i++;


}
#导入“ViewController.h”
@界面视图控制器()
@结束
@实现视图控制器
-(无效)viewDidLoad
{
[超级视图下载];
imagesArray=[[NSArray alloc]initWithObjects:@“images.jpg”,“images1.jpg”,“images2.jpg”,“images4.jpg”,nil];
i=0;
sing=[SingleTon createSingleTon];
//加载视图后,通常从nib执行任何其他设置。
}
-(iAction)changeImage:(id)发件人
{

如果(我能你建议我怎么做吗???我不知道任何意义上的singleton…:(好的,但是我应该在哪里创建一个类?我是说你提供的链接,我需要创建另一个.h和.m文件还是我必须将它们粘贴到我的视图控制器中???请建议!!!你不需要创建新的.h和.m文件,你只需要添加一个类方法(标记为+而不是-,在类上而不是在类的实例上调用),返回在.m文件中声明的静态实例(如果为nil,则在实例化之后)。