2014-09-03 3 views
-3

Как узнать значение моего UISlider внутри моего SubView? Я пробовал следующее, но я получил свойство ошибки «слайдер не найден» на объекте типа UIView? Заранее спасибо.Чтение значения UISlider внутри подвью?

#import "ViewController.h" 

@interface ViewController() 
@property UIView *controlview; 
@property UISlider *slider; 

@end 


@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor redColor]; 
    UIView *controlview = [[UIView alloc]initWithFrame:CGRectMake(0, 100,     self.view.frame.size.width, (self.view.frame.size.height/4))]; 
    controlview.backgroundColor = [UIColor blackColor]; 
    [self.view addSubview:controlview]; 
    CGRect frame = CGRectMake(0.0, 0.0, 100.0, 40.0); 
    UISlider *slider = [[UISlider alloc] initWithFrame:frame]; 
    [slider addTarget:self action:@selector(sliderAction) forControlEvents:UIControlEventValueChanged]; 
    slider.minimumValue = 0.0; 
    slider.maximumValue = 50.0; 
    slider.continuous = YES; 
    slider.value = 25.0; 
    [controlview addSubview:slider]; 
} 

- (void)sliderAction 
{ 
    float slidervalue = [_controlview.slider.value]; 
    self.view.frame = CGRectMake(slidervalue, 0, self.view.frame.size.width, 480); 
    NSLog(@"YES"); 
} 

@end 
+0

Вы не присваивающей слайдер добавил к вашему представлению свойство глобального слайдера! –

+1

@Paul Thomas Balfour - вы должны потратить время, чтобы принять ответы. Вы получите больше ответа. – Woodstock

+1

@Woodstock извиняется перед всеми заинтересованными сторонами. Моя настоящая ошибка. Я не принял никаких ответов на мои вопросы. В следующий раз попробует лучше. Спасибо, что дали мне знать. –

ответ

0

Слайдер свойство вашего класса, просто читать его значение с помощью вызова self.slider.value так:

float slidervalue = self.slider.value; 

изменить Также это:

UISlider *slider = [[UISlider alloc] initWithFrame:frame]; 

к этому :

self.slider = [[UISlider alloc] initWithFrame:frame]; 
0

У вас есть m ade two в вашем коде, который не используется, потому что вы добавляете объекты локально.

Problem Поскольку ползунок является локальным объектом в вашем коде. Вы не можете получить доступ к объекту слайдера вне метода он определен в.

Solution Изменить эти строки в коде

[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged]; 

и способ изменения к этому

- (void)sliderAction:(id)sender 
{ 
    UISlider *mySlider = (UISlider*)sender; 
    float slidervalue = mySlider.value; 
    self.view.frame = CGRectMake(slidervalue, 0, self.view.frame.size.width, 480); 
} 
Смежные вопросы