0

我正在创建一个必须与服务器数据交互的应用程序,然后相应地显示来自数据库的结果。我正在用 Cocoa 编写客户端应用程序。

示例:用户登录到 Web 应用程序。他们有一些提交网络报告的选项。选择:单行和多行。他们可以为他们想要输入的各种变量选择他们拥有的这些字段的数量。然后将其保存在 MYSQL 数据库中供以后使用。

示例(第 2 部分):客户端应用程序获取 MYSQL 数据库中的数据,然后显示它。问题在于它是可变数量的字段和可变数量的类型。

换句话说,数据库基本上存储了我们是否要显示 NSSecureTextField、NSTextField 等,然后将其显示在屏幕上。正如我在上面所指出的,问题是他们可以选择他们想要的元素的数量和类型——所以我不太确定如何将其转换为代码。

澄清一下,我并不是在尝试构建一个在线界面生成器。一种简单的在线输入数据的方式,该数据具有可变数量的字段,以及这些字段的各种类型。我已经创建了在线系统,但我在客户端部分遇到了困难。

任何帮助将不胜感激!

4

1 回答 1

1

我不确定我是否理解您的要求。弄清楚用户想要多少个 NSTextField 然后用一点 for() 循环来创建它们不是很简单吗?您可能想要跟踪文本字段,所以我可能会这样做:

NSMutableDictionary * interfaceElements = [[NSMutableDictionary alloc] init];

for (NSInteger i = 0; i < numberOfTextFields; ++i) {
  //this is just to make a frame that's indented 10px
  //and has 10px between it and the previous NSTextField (or window edge)
  NSRect frame = NSMakeRect(10, (i*22 + (i+1)*10), 100, 22);
  NSTextField * newField = [[NSTextField alloc] initWithFrame:frame];
  //configure newField appropriately
  [[myWindow contentView] addSubview:newField];
  [interfaceElements setObject:newField forKey:@"someUniqueIdentifier"];
  [newField release];
}

字典当然不会是这种方法的本地,但我想你明白了。

或者,您可以强制 NSMatrix 为您自动布局。

如果您正在为 iPhone 编写客户端应用程序,那么我强烈建议您查看Settings Application Schema 参考以获取灵感。如果您对此不熟悉,这里有一个简短的介绍:iPhone 允许开发人员将他们的偏好区域从实际应用程序移动到设置应用程序。这是通过创建一个设置包并以一种非常具体的方式构建一个 plist 来完成的。Settings.app 然后发现该 plist,对其进行解析,并根据其包含的定义构建一个接口。您可以使用开关、文本字段(甚至是安全字段)、滑块、组和其他几种界面元素。

于 2009-07-05T17:05:55.083 回答