Как использовать синглтон в приложении для iPhone? - PullRequest
1 голос
/ 17 октября 2011

привет всем, кто новичок в разработке для iphone.

У меня есть 5 тем в моем приложении.

У меня есть статические изображения для каждой темы (для ярлыков, кнопок и всех), но я незнать, как я могу применить или изменить новую тему для всего приложения.Я прочитал синглтон, но не могу понять, как я могу использовать его для изменения изображений всего приложения.

Есть ли какой-либо другой способ применить тему к приложению, или это единственный метод, если да, то как можноЯ использую его.

РЕДАКТИРОВАТЬ: Это мой код синглтон-класса, но я не нашел способа реализовать изображения для различных тем.

#import "MyClass.h"




@implementation MyClass

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

return instance;
}

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

Вам следует заглянуть в прокси-сервер UIAppearance в iOS 5. Для более ранних версий одноэлементный подход кажется нормальным: вы запрашиваете изменение внешнего вида для синглтона, который изменяет его различные изображения, а затем либо отправляет уведомление (NSNotification), чтобы проинформировать любые заинтересованные стороныкто хотел бы обновить свой интерфейс соответственно.Или вы можете установить наблюдатели значения ключа (KVO) на свойствах синглтона, чтобы они автоматически получали информацию при изменении одного из них.

В этом посте показано, как реализовать синглтон.Это просто способ получить доступ к одному и тому же экземпляру класса из любого места. Здесь - это ссылка на обсуждение шаблона проектирования синглтона вместе с более «чистой» реализацией синглтона.

0 голосов
/ 09 августа 2012

Если вы хотите изменить изображение при нажатии, может пригодиться следующий код. В противном случае, если вы хотите изменить их динамически, используйте код в методе Action с методом делегата 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

viewcontroller .m file

#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++;


}
...