пользовательский UISwitch не изменит состояние - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть собственный класс Uiswitch, ничего особенного, заголовок выглядит так:

#import <Foundation/Foundation.h>

@class Course;
@class Student;

@interface AttandanceSwitch : UISwitch

@property (strong,nonatomic) Course *course;
@property (strong,nonatomic) Student *student;
@property (strong,nonatomic) UISwitch *originalSwitch;

-(id)initWithSwitch:(UISwitch *)newSwitch Student:(Student *)student andCourse:(Course *)course;
-(NSString *) description;

@end

.m файл выглядит следующим образом:

#import "AttandanceSwitch.h"
#import "Course.h"
#import "Student.h"

@implementation AttandanceSwitch 

@synthesize course,student,originalSwitch;

-(id)initWithSwitch:(UISwitch *)newSwitch Student:(Student *)studentP andCourse:(Course *)courseP
{

    self = [super init];
    self.course = courseP;
    self.student = studentP;
    self.originalSwitch = newSwitch;

    [self.originalSwitch setOn:YES];

    return self;
}

-(NSString *) description 
{
    return [NSString stringWithFormat:@"Student: %@, Course: %@, Switch: %@",student.name,course.name,[originalSwitch description]];
}

@end

Так в чем же проблема - когда я создаю новый объект этого класса с помощью initWithSwitch, я не могу установить значение originalSwitch. Я даже пытался установить его статически (см. Self.originalSwitch setOn: YES выше), но даже если я это сделаю, переключатель все еще выключен.

Буду очень признателен за любые идеи о том, как заставить это работать ...

это выдержка из использования этого класса в tableviewcell:

UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero]; 
[switchView addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventTouchUpInside]; 
AttandanceSwitch *customSwitch = [[AttandanceSwitch alloc] initWithSwitch:switchView Student:student andCourse:courseToTrack]; 

Студент и курс хорошо заполняются.

1 Ответ

0 голосов
/ 21 декабря 2011

Ваш код будет работать, если вы так его называете в viewDidLoad вашего ViewController:

UISwitch *newSwitch = [[UISwitch alloc] init];
AttandanceSwitch *customSwitch = [[AttandanceSwitch alloc] initWithSwitch:newSwitch];
[self.view addSubView:customSwitch.original];
[customSwitch.original setOn:YES];
...