Как получить текущее значение слайдера в коде? - PullRequest
6 голосов
/ 03 мая 2011

Я (пытаюсь) разработать свое первое приложение в Xcode с использованием инфраструктуры какао.

У меня есть ползунок, минимальное значение которого равно 10, а максимальное - 50. Это позволяет выбрать максимальное количество результатов поиска.

Я связал метку в своем пользовательском интерфейсе, чтобы отобразить значение ползунка, и когда он перемещается, он обновляет метку в пользовательском интерфейсе.
Однако я пытаюсь объединить 4 строки, чтобы создать свой окончательный вариант.URL-адрес одного из них является значением указанной метки.

Я пытаюсь прочитать значение метки на интерфейсе для использования при создании готового URL-адреса

NSString *startofURL = @"http://starturl.com/?q=";  
NSString *searchTerm = whatToSearch;  
NSString *middleofURL = "&max-results=";  
NSString *resultsStr = labelMaxResults.stringValue;    //Problem here ??  

У меня есть 2 вопроса;во-первых, как мне получить значение моего ползунка с помощью кода вместо того, чтобы пытаться получить его из связанной метки, поскольку я думаю, что это моя проблема.

во-вторых, я прочитал о присоединении и добавлениистроки, однако я немного запутался в том, какой метод лучше всего использовать для объединения 4 строк в один длинный URL.

Ответы [ 3 ]

6 голосов
/ 04 мая 2011
    NSSlider * slider = [[NSSlider alloc] init];
    [slider setMinValue:50];
    [slider setMaxValue:150];
    int sliderValue = [slider intValue];

это не выводит ваш ползунок на экран, но предположим, что вы сделали это в IB, игнорируйте первую строку, вы можете установить минимальное максимальное значение и получить значение.Вы можете выполнить действие, например

- (IBAction) sliderMoved: (id) sender

, затем привязать его к слайдеру, если вы установите слайдер в непрерывное состояние, вы будетеполучать обновления каждый раз, когда он перемещается по-другому, только когда вы отпустите ползунок

-(IBAction)sliderMoved:(id)sender
{
    sliderValue = [slider intValue];
    [self doSomethingElseNow];
}
6 голосов
/ 04 мая 2011

Что касается первой части вашего вопроса, это зависит от того, какую ОС вы используете, и какой процесс использовать.

Если вы используете OS X, лучший способ получить значение для вашего ползунка - этосоздайте привязку в IB для вашего слайдера.Для этого нажмите на слайдер в IB и перейдите в раздел «Привязки».В разделе Value нажмите Value и выберите класс, в котором вы хотите использовать значение в качестве класса Bind To (в этом примере я собираюсь использовать MyClass).Затем для ключевого пути модели присвойте ему какое-либо значение по вашему выбору.Для этого я просто назову его sliderValue.

Затем в MyClass.h вы должны настроить следующее:

@interface MyClass : <your class type> {
    int sliderValue;
}
@property (readwrite, assign) int sliderValue;

В MyClass.m вынеобходимо синтезировать значение.

@synthesize sliderValue;

На этом этапе вы сможете получить значение своего ползунка в любой точке своего кода, вызвав [self sliderValue].

Если выОднако, используя iOS, все, что вам нужно сделать, это вызвать свойство value из вашего ползунка.Поэтому, если у вас есть UISlider *mySlider, все, что вам нужно сделать, это позвонить по номеру mySlider.value, чтобы узнать текущее значение вашего ползунка.

По второму вопросу вы можете обойти это двумя способами.Если вы хотите добавить строки, просто следуйте формату:

NSString *appendedString = @"";
appendedString = [appendedString stringByAppendingString:string1];

и т. Д., Пока все URL-адреса не будут включены в ваш URL.

В вашем случае я бы лично настроилвся строка URL-адреса в виде stringWithFormat:

NSString *urlString = [NSString stringWithFormat:@"http://www.starturl.com/%@%@%@", whatToSearch, middleOfURL, resultsStr];

Вставьте нужные значения в URL-адрес таким образом, настроив whatToSearch и т. д., на нужные значения.Таким образом, вам не нужно беспокоиться о сложении всего вместе

1 голос
/ 04 мая 2011

Ваш код должен выглядеть следующим образом:

NSString *urlString = [NSString stringWithFormat:@"http://starturl.com/?q=%@&max-results=%f", whatToSearch, [slider floatValue]];

РЕДАКТИРОВАТЬ: Исправил мой ответ.Для UISlider это должно быть значение свойство.Для NSSlider вы должны использовать - floatValue метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...