如何在代码中接收滑块的当前值?

Ste*_*eve 6 string cocoa append objective-c slider

我(尝试)使用cocoa框架在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 ??  
Run Code Online (Sandbox Code Playgroud)

我有两个问题; 首先,我如何通过代码检索滑块的值,而不是试图从链接标签中获取它,因为我认为这是我的问题.

其次,我已经阅读了关于加入和追加字符串的内容,但是我有点困惑,这是将4个字符串连接成一个长URL的最佳方法.

jus*_*tin 6

对于问题的第一部分,它取决于您使用哪个操作系统来使用哪个进程.

如果您使用的是OS X,获取滑块值的最佳方法是在IB中为滑块创建绑定.为此,请单击IB中的滑块并转到绑定部分.在Value部分中,单击Value并选择您希望将值作为Bind To类的类(我将在本例中使用MyClass).然后,对于模型键路径,将其分配给您选择的某个值.出于此目的,我将其称为sliderValue.

然后在MyClass.h中,您必须设置以下内容:

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

在MyClass.m中,您需要合成该值.

@synthesize sliderValue;
Run Code Online (Sandbox Code Playgroud)

此时,您应该可以通过调用在代码中的任何位置获取滑块的值[self sliderValue].

但是,如果您使用iOS,那么您只需从滑块调用value属性即可.所以如果你有a UISlider *mySlider,你所要做的就是调用mySlider.value以获得滑块的当前值.

对于你的第二个问题,你可以采取这两种方式.如果要附加字符串,只需遵循以下格式:

NSString *appendedString = @"";
appendedString = [appendedString stringByAppendingString:string1];
Run Code Online (Sandbox Code Playgroud)

等等,直到你把所有的字符串都放到你的URL中.

在您的情况下,我个人会将整个URL字符串设置为stringWithFormat:

NSString *urlString = [NSString stringWithFormat:@"http://www.starturl.com/%@%@%@", whatToSearch, middleOfURL, resultsStr];
Run Code Online (Sandbox Code Playgroud)

通过将whatToSearch等设置为所需的值,将所需的值插入到URL中.这样,您就不必担心将所有内容附加在一起


Gra*_*yer 6

    NSSlider * slider = [[NSSlider alloc] init];
    [slider setMinValue:50];
    [slider setMaxValue:150];
    int sliderValue = [slider intValue];
Run Code Online (Sandbox Code Playgroud)

这不会将您的滑块放在屏幕上,但假设您在IB中创建它,忽略第一行,您可以设置最小值并获取值.你可以做出像这样的动作

- (IBAction为)sliderMoved:(ID)发送者

然后将它绑定到滑块,如果你将滑块设置为连续,那么只要你放开滑块,它就会在每次移动时获得更新

-(IBAction)sliderMoved:(id)sender
{
    sliderValue = [slider intValue];
    [self doSomethingElseNow];
}
Run Code Online (Sandbox Code Playgroud)