数据输入控件与内置对话框的使用指南
在开发应用程序时,我们常常需要让用户输入各种类型的数据,如数值、日期等。同时,为了给用户提供更好的交互体验,内置对话框也是不可或缺的一部分。本文将详细介绍滑块、日期选择器、步进器等数据输入控件的使用方法,以及内置对话框的创建和定制。
1. 数据输入控件概述
在开发应用程序时,根据不同的需求,我们需要为用户提供不同的输入方式。当需要用户从有限的选项列表中进行选择时,单选按钮、复选框和弹出按钮是不错的选择;若需要用户输入数据,文本字段或组合框会更合适。然而,当需要用户选择一个数值时,预定义的选项列表可能会显得过于局限和笨拙,而强制用户输入数字在需要限制数字范围时可能也不太可行。此时,可以使用水平、垂直或圆形滑块。另外,步进器也是一种让用户输入数值的方式,它看起来像一个小的上下箭头。而当需要用户输入日期时,为了避免格式问题,可以使用日期选择器。这些控件的主要目的是防止用户向程序提供无效信息,从而提高程序的可靠性。
2. 使用滑块
2.1 滑块类型
滑块主要用于让用户拖动以选择一个值,有以下三种类型:
- 水平滑块
- 垂直滑块
- 圆形滑块
2.2 创建滑块
创建滑块的步骤如下:
1. 在 Interface Builder 中打开一个
.xib
用户界面文件。
2. 选择
Tools ➤ Library
打开库窗口。
3. 从对象库中拖动水平滑块对象、垂直滑块对象或圆形滑块对象,并将其放置在用户界面窗口上。
2.3 定义滑块值
对于每个滑块,可以定义最小值、最大值和当前值:
- 最小值:表示滑块(水平滑块的左侧或垂直滑块的底部)可以返回的最低值。
- 最大值:表示滑块(水平滑块的右侧或垂直滑块的顶部)可以返回的最高值。
- 当前值:定义滑块上显示的值,通过修改该值可以设置滑块的位置。
可以在滑块的属性检查器窗口中设置这三个值,通过点击滑块并选择
Tools ➤ Attributes Inspector
打开该窗口。
2.4 显示刻度标记
刻度标记可以出现在水平滑块的上方或下方、垂直滑块的左侧或右侧,或圆形滑块的边缘。在显示刻度标记时,可以选择其出现的位置、显示的刻度标记数量,以及是否限制滑块只能按刻度标记定义的增量移动。要定义刻度标记的外观,需要在滑块的属性检查器窗口中修改以下内容:
- 刻度标记的位置
- 要显示的刻度标记数量(此值必须为 1 或更大才能显示刻度标记)
- 滑块是否只能按刻度标记定义的增量移动
2.5 检索和显示滑块的值
当用户操作滑块时,滑块的当前值会不断变化,但除非将该值显示在另一个对象(如标签)中,否则无法看到这些变化。使用标签显示滑块当前值的步骤如下:
1. 双击资源文件中的
MainMenu.xib
文件以打开 Interface Builder。
2. 选择
Tools ➤ Library
打开库窗口。
3. 从对象库中拖动一个标签对象和一个滑块对象,并将它们放置在用户界面窗口上。
4. 右键单击标签对象以显示一个提示窗口。
5. 点击
Received Actions
类别下
takeIntegerValueFrom
右侧出现的圆圈,并将其拖放到滑块对象上(如果希望标签显示小数,则应将
takeFloatValueFrom
圆圈拖到滑块上)。
6. 选择
File ➤ Save
或按
! S
保存更改。
7. 切换到 Xcode 并点击
Build and Run
按钮或选择
Build ➤ Build and Run
。
8. 拖动滑块,此时滑块的当前值将显示在标签内。
9. 退出程序,例如按
! Q
。
需要注意的是,圆形滑块的工作方式与水平或垂直滑块相同,只是用户必须旋转滑块来更改其值。
3. 使用日期选择器
3.1 日期选择器的显示方式
日期选择器允许用户通过点击选项而不是输入整个日期或时间来输入日期和时间。它有以下三种显示方式:
- 文本式:显示一个自动格式化日期和时间的文本字段。
- 带步进器的文本式:显示日期和时间,允许使用步进器(上下箭头)增加或减少月、日和年。
- 图形化:显示一个月历和一个时钟。
3.2 创建日期选择器
创建日期选择器的步骤如下:
1. 在 Interface Builder 中打开一个
.xib
用户界面文件。
2. 选择
Tools ➤ Library
打开库窗口。
3. 从对象库中拖动日期选择器对象,并将其放置在用户界面窗口上。
3.3 修改日期选择器属性
创建日期选择器后,可以通过点击日期选择器对象并打开其属性检查器窗口(选择
Tools ➤ Attributes Inspector
)来修改以下一个或多个属性:
| 属性 | 描述 |
| ---- | ---- |
| 样式 | 定义日期选择器的显示方式(文本式、带步进器的文本式或图形化) |
| 选择范围 | 定义用户是否只能选择单个日期或一个日期范围 |
| 元素 | 定义是否包括月、日、年以及时、分、秒 |
| 日期 | 确定当前显示的日期 |
| 最小日期 | 定义最早的有效日期 |
| 最大日期 | 定义最晚的有效日期 |
| 显示 | 定义日历周围是否显示背景颜色和/或边框 |
| 文本 | 定义日期选择器上显示的文本颜色 |
| 背景 | 定义日期选择器的背景颜色 |
3.4 从日期选择器中检索日期
要从日期选择器中检索日期,需要在头文件(
.h
)中声明一个
NSDatePicker
变量:
NSDatePicker *myDate;
@property (retain) IBOutlet NSDatePicker *myDate;
然后,在实现文件(
.m
)中使用
@synthesize
命令:
@synthesize myDate;
需要将
myDate
变量连接到用户界面上的实际日期选择器。现在,如果要从日期选择器中检索值,只需使用
dateValue
属性:
myDate.dateValue
以下是一个使用日期选择器的示例步骤:
1. 打开之前修改过的
MyTest
程序。
2. 双击资源文件夹中存储的
MainMenu.xib
文件,Interface Builder 会显示用户界面窗口。
3. 点击当前显示在用户界面上的任何项目并按
Delete
键将其删除。
4. 将一个按钮对象和一个日期选择器对象拖放到用户界面窗口上。
5. 点击日期选择器对象并选择
Tools ➤ Attributes Inspector
显示属性检查器窗口。
6. 点击
Style
弹出按钮并选择
Graphical
。
7. 点击
Selects
弹出按钮并选择
Single Date
。
8. 在
Elements
类别下,选择
Month, Day, and Year
单选按钮和
Hour, Minute, and Second
单选按钮。
9. 点击
Classes
文件夹中存储的
MyTestAppDelegate.h
文件,并修改代码如下:
#import <Cocoa/Cocoa.h>
@interface MyTestAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
NSDatePicker *myDate;
}
@property (retain) IBOutlet NSWindow *window;
@property (retain) IBOutlet NSDatePicker *myDate;
-(IBAction) displayDate:(id)sender;
@end
-
选择
File ➤ Save或按! S保存更改。 -
点击
Classes文件夹中存储的MyTestAppDelegate.m文件,并修改代码如下:
#import "MyTestAppDelegate.h"
@implementation MyTestAppDelegate
@synthesize window;
@synthesize myDate;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
}
- (void)dealloc {
[myDate release];
[window release];
[super dealloc];
}
-(IBAction) displayDate:(id)sender
{
NSLog (@"Date = %@", myDate.dateValue);
}
@end
-
选择
File ➤ Save或按! S保存更改。 -
双击资源文件夹中存储的
MainMenu.xib文件,Interface Builder 会显示用户界面窗口。 -
右键单击
MainMenu.xib窗口中的My Test App Delegate图标,会出现一个提示窗口。 -
点击
Outlets标题下myDate右侧出现的圆圈,并将其拖放到用户界面上的日期选择器上。 -
点击
Received Actions下displayDate右侧出现的圆圈,并将其拖放到用户界面上的按钮上。 -
选择
File ➤ Save或按! S保存更改。 -
切换到 Xcode 并点击
Build and Run按钮或选择Build ➤ Build and Run。只要没有输入错误,应该会弹出一个空白窗口。 - 点击日期选择器上显示的日期。
- 点击日期选择器上显示的时间。
- 点击按钮。
- 退出程序。
-
选择
Run ➤ Console或按! R,应该会看到NSLog命令创建的打印语句。
4. 使用步进器
4.1 步进器概述
步进器允许用户以固定的增量(如 1)增加一个值。它可以让用户从一个有效的值范围内进行选择,并且比滑块占用的空间更小。
4.2 创建步进器
创建步进器的步骤如下:
1. 在 Interface Builder 中打开一个
.xib
用户界面文件。
2. 选择
Tools ➤ Library
打开库窗口。
3. 从对象库中拖动步进器对象,并将其放置在用户界面窗口上。
4.3 修改步进器属性
创建步进器后,可以修改以下一个或多个属性:
| 属性 | 描述 |
| ---- | ---- |
| 值循环 | 定义当步进器达到其最小值或最大值时是否停止(未选中)或“循环”并允许步进器从最小值跳到最大值,反之亦然(选中) |
| 自动重复 | 定义用户是否可以按住步进器的上下箭头以持续增加(选中),还是每次必须点击步进器的上下箭头来增加或减少值(未选中) |
| 最小值 | 定义最小值 |
| 最大值 | 定义最大值 |
| 增量 | 定义用户每次点击上下箭头时步进器增加或减少其值的增量 |
| 当前值 | 确定步进器中存储的当前值 |
4.4 显示和检索步进器的值
步进器的一个问题是,当点击更改其值时,无法看到更改。为了显示更改,可以将一个标签对象链接到步进器对象,以便值始终显示在标签中。如果需要从步进器中检索值,可以使用
doubleValue
属性:
myStepper.doubleValue
以下是一个使用步进器的示例步骤:
1. 打开之前修改过的
MyTest
程序。
2. 双击资源文件夹中存储的
MainMenu.xib
文件,Interface Builder 会显示用户界面窗口。
3. 点击当前显示在用户界面上的任何项目并按
Delete
键将其删除。
4. 将一个按钮对象、一个标签对象和一个步进器对象拖放到用户界面窗口上。
5. 点击步进器对象并选择
Tools ➤ Attributes Inspector
显示属性检查器窗口。
6. 点击选择
Value Wraps
复选框(如果
Auto Repeats
复选框未选中,点击选中它)。
7. 点击
Maximum
文本字段,输入 5 并按
Return
键。
8. 点击
Classes
文件夹中存储的
MyTestAppDelegate.h
文件,并修改代码如下:
#import <Cocoa/Cocoa.h>
@interface MyTestAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
NSStepper *myValue;
}
@property (retain) IBOutlet NSWindow *window;
@property (retain) IBOutlet NSStepper *myValue;
-(IBAction) displayValue:(id)sender;
@end
-
选择
File ➤ Save或按! S保存更改。 -
点击
Classes文件夹中存储的MyTestAppDelegate.m文件,并修改代码如下:
#import "MyTestAppDelegate.h"
@implementation MyTestAppDelegate
@synthesize window;
@synthesize myValue;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
}
- (void)dealloc {
[myValue release];
[window release];
[super dealloc];
}
-(IBAction) displayValue:(id)sender
{
NSLog (@" Value = %f", myValue.doubleValue);
}
@end
-
选择
File ➤ Save或按! S保存更改。 -
双击资源文件夹中存储的
MainMenu.xib文件,Interface Builder 会显示用户界面窗口。 -
右键单击
MainMenu.xib窗口中的My Test App Delegate图标,会出现一个提示窗口。 -
点击
Outlets标题下myValue右侧出现的圆圈,并将其拖放到用户界面上的步进器上。 -
点击
Received Actions下displayValue右侧出现的圆圈,并将其拖放到用户界面上的按钮上。 - 右键单击用户界面窗口上的标签,会出现一个提示窗口。
-
点击
takeDoubleValueFrom右侧出现的圆圈,并将其拖放到用户界面上的步进器上,这将标签链接到步进器的值。 -
选择
File ➤ Save或按! S保存更改。 -
切换到 Xcode 并点击
Build and Run按钮或选择Build ➤ Build and Run。只要没有输入错误,应该会弹出一个空白窗口。 - 点击步进器上的上下箭头,会注意到值显示在标签中。
- 点击按钮。
- 退出程序。
-
选择
Run ➤ Console或按! R,应该会看到NSLog命令创建的打印语句。
5. 数据输入控件使用流程总结
graph LR
A[选择输入方式] --> B{输入数值}
A --> C{输入日期}
B --> D[使用滑块或步进器]
C --> E[使用日期选择器]
D --> F[创建控件]
E --> F
F --> G[设置属性]
G --> H[显示和检索值]
通过以上步骤,我们可以根据不同的需求,灵活使用滑块、日期选择器和步进器等数据输入控件,为用户提供更好的输入体验。同时,通过合理设置控件的属性和显示方式,可以确保用户输入的数据的有效性和准确性。
6. 使用内置对话框
6.1 内置对话框概述
在开发应用程序时,内置对话框是常见且实用的用户界面元素。苹果在 Cocoa 框架中提供了大量预编写和经过测试的代码,使用这些代码不仅能让我们更快地创建程序,还能确保程序的外观和行为与典型的 Mac 程序一致。常见的对话框包括用于提醒用户的警告面板,以及让用户选择文件夹和文件的打开或保存对话框。使用这些内置对话框可以使我们的程序看起来和行为上都与苹果的原生程序(如 iPhoto 和 iTunes)相似。
6.2 使用警告对话框
警告对话框用于在程序需要引起用户注意时使用。使用警告对话框需要完成创建和定制、在屏幕上显示以及检索用户选择(如点击“确定”或“取消”按钮)等步骤。
6.2.1 创建警告对话框
创建警告对话框的第一步是定义一个指向
NSAlert
类的指针并进行初始化:
NSAlert *alert = [[NSAlert alloc] init];
6.2.2 定义对话框类型
警告对话框有以下三种类型:
| 类型 | 描述 |
| ---- | ---- |
| NSWarningAlertStyle | 显示用于警告用户即将发生事件的默认样式 |
| NSInformationalAlertStyle | 创建用于警告用户事件的对话框,外观与
NSWarningAlertStyle
相同 |
| NSCriticalAlertStyle | 显示一个警告图标,用于提醒用户可能会有后果的事件 |
要定义对话框的类型,只需使用
alertStyle
并指定所需的样式,例如:
NSAlert *alert = [[NSAlert alloc] init];
alert.alertStyle = NSWarningAlertStyle;
需要注意的是,对话框中显示的图标是分配给程序的图标。如果没有为程序分配图标,则将显示默认的应用程序图标。
6.2.3 显示对话框并释放内存
要使警告对话框实际显示在屏幕上,并在使用完后释放其内存,需要添加以下两行代码:
NSAlert *alert = [[NSAlert alloc] init];
alert.alertStyle = NSWarningAlertStyle;
[alert runModal];
[alert release];
[alert runModal]
这行代码使对话框实际出现在屏幕上。虽然这四行代码可以创建和显示一个对话框,但通常还需要使用文本和按钮对对话框进行定制。
6.3 内置对话框使用流程总结
graph LR
A[确定使用场景] --> B{需要提醒用户}
A --> C{需要用户选择文件}
B --> D[使用警告对话框]
C --> E[使用打开或保存对话框]
D --> F[创建对话框]
E --> F
F --> G[定制对话框]
G --> H[显示对话框]
H --> I[检索用户选择]
7. 总结
7.1 数据输入控件总结
滑块和步进器允许用户选择一个落在固定范围内的数值。为了显示滑块或步进器的值,可能需要将一个标签链接到滑块或步进器,以便值始终显示在标签上,让用户能够看到。日期选择器允许用户通过输入实际的数值或点击显示的日期来选择日期。滑块、步进器和日期选择器是为用户提供有限数量有效选择的几种方式。
7.2 内置对话框总结
内置对话框是 Mac 程序中常见的元素,使用苹果提供的预编写代码可以方便地创建警告对话框、打开或保存对话框等。通过合理使用这些对话框,可以提高程序的用户体验和与其他 Mac 程序的一致性。
7.3 综合应用建议
在开发应用程序时,应根据具体的需求选择合适的数据输入控件和内置对话框。例如,当需要用户选择一个数值时,可以考虑使用滑块或步进器;当需要用户选择日期时,日期选择器是一个不错的选择;而当需要提醒用户或让用户选择文件时,内置对话框则能发挥重要作用。同时,要注意对控件和对话框进行合理的定制和设置,以确保用户输入的数据的有效性和程序的可靠性。
通过掌握这些数据输入控件和内置对话框的使用方法,我们可以开发出更加友好、可靠和专业的应用程序。在实际开发过程中,还可以根据具体的业务需求和用户体验要求,进一步优化和扩展这些控件和对话框的功能。
超级会员免费看
1348

被折叠的 条评论
为什么被折叠?



