0

我目前使用 Sensible TableView Framework 为新应用创建搜索过滤器掩码。一切正常,但最新的 Screendesign 带来了新问题。

现在需要在最小值和最大值之间选择一个范围。我们现在必须创建一种新类型的自定义 RangeSlider(与 UISliderView 相似),而不是使用两个数字文本字段来定义范围。现在我创建了 RangeSlider(带有两个拇指标记的滑块)作为 CustomClass,没有 xib 文件。我现在必须在我的 tableview 中将其实现为 customCell?仍然无法弄清楚如何通过 STV 做到这一点。

我的 RangeSlider 需要设置一些属性:

  • 浮动最小值;
  • 浮动最大值;
  • 浮动最小范围;
  • 浮动选定最小值;
  • 浮动选定最大值;

并通过更改属性值来响应用户交互。

范围滑块:这就是它的样子。

简而言之,我的问题:如何在没有 xib 文件的情况下将我的 RangeSlider 类实现为 CustomCell?而且.. 是否也可以使用 SCUserDefaultsDefinition 跟踪我的 customCell 的用户交互?

这就是我创建 STV 的方式:

SCUserDefaultsDefinition *userDefaultsDef = [SCUserDefaultsDefinition definitionWithDictionaryKeyNamesString:@"Search Filter:(gender,ageRangeSlider,zip,country)"];
SCPropertyDefinition *genderDef = [userDefaultsDef propertyDefinitionWithName:@"gender"];
genderDef.title = @"Gender";
genderDef.required = TRUE;
genderDef.type = SCPropertyTypeSelection;
genderDef.attributes = [SCSelectionAttributes attributesWithItems:[NSArray arrayWithObjects:@"f", @"m", nil] allowMultipleSelection:NO allowNoSelection:NO];
genderDef.autoValidate = TRUE;

/*#### CUSTOMCELL IMPLEMENTATION HERE #### */

SCPropertyDefinition *zip = [userDefaultsDef propertyDefinitionWithName:@"zip"];
zip.title = @"Zip-Code";
zip.type = SCPropertyTypeNumericTextField;
zip.attributes = [SCNumericTextFieldAttributes attributesWithMinimumValue:[NSNumber numberWithInt:01] maximumValue:[NSNumber numberWithInt:99] allowFloatValue:NO];
[self.tableViewModel generateSectionsForUserDefaultsDefinition:userDefaultsDef];
SCTableViewSection *formSection = [self.tableViewModel sectionAtIndex:0];
formSection.cellActions.valueChanged = ^(SCTableViewCell *cell, NSIndexPath *indexPath)
{
     NSLog(@"\n\n*********** Key Binding Log ***********\n");
     NSLog(@"Value: %@\n", [cell boundValue]);
};

如果有人可以提供帮助,那就太好了!我非常感谢!如果您需要更多信息,请告诉我。

谢谢,

拉斯(对不起我的英语不好)

4

1 回答 1

0

好的,问题解决了!

解决方案来了: 要在 STV 中将 customClass 添加为 CustomCell,您必须使用 Classname/Nibname 和 customControl 的标记定义 SCCustomPropertyDefinition 作为 objectBinding。

SCUserDefaultsDefinition *userDefaultsDef = [SCUserDefaultsDefinition definitionWithDictionaryKeyNamesString:@"Search Filter:(gender,ageRangeSlider,zip,country)"];

SCCustomPropertyDefinition * customControl = [SCCustomPropertyDefinition definitionWithName:@"ageRangeSlider" uiElementClass:[CustomControlClass class] objectBindingsString:@"1:selectedRange;"];
[userDefaultsDef insertPropertyDefinition:customControl atIndex:1];

在创建新的 PropertyDefinition 并将其添加到您的 UserDefaultsDefinition 之后,您可以使用 PropertyDefinition (@"1:selectedRange;") 中的 ObjectBindingString 在您的 CustomControlClass 中配置响应属性。数字表示自定义单元格中每个控件的 IB 标记,而字符串代表用作此控件的 ResponseValue 的属性。

希望这对未来的其他开发者有所帮助。

于 2012-11-27T10:09:02.660 回答