首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置RadDataForm ListPicker选择器的样式

问如何设置RadDataForm ListPicker选择器的样式
EN

Stack Overflow用户
提问于 2019-06-06 14:32:46
回答 1查看 535关注 0票数 0

我在一个Nativescript-Angular应用程序中有一个RadDataForm。

这个RadDataForm显示了我的一个属性的列表选择器。

我读过关于RadDataForm组件样式的文章,但它缺少如何设置当我更改日期时显示的“轮子文本”样式的部分。(或者我错过了什么?)

它们仍然是黑色的,但我需要其他颜色的(即白色)。

我已经为DatePicker解决了这个问题,但这对列表拾取器不起作用-->在我改变选择后它会改变颜色。

我有一个playground设置,并使用iOS设备对其进行了测试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-19 15:42:14

在到处找了很久之后,我找到了Nativescript-Example App。

在这个应用程序内部,还有一个带有列表选择器的RadDataForm。该应用程序还显示了示例中使用的代码。

在我的组件中,我有:

代码语言:javascript
复制
onEditorSetup(event: DataFormEventData) {

    const property = this.myDataForm.dataForm.getPropertyByName(event.propertyName);
    const t = property.editor.type;
    if (t === DataFormEditorType.Picker) {
        console.log("found picker editor for " + property.displayName);
        if (app.ios) {
            this.setupPickerViewEditor(event);
        }
    }
}

setupPickerViewEditor(event: DataFormEventData) {
        console.log("setting up editor: " + event.editor);
        const delegate = UIPickerViewDelegateImplementation.new().initWithOwner(event.editor);
        this.delegates.set(event.propertyName, delegate); // storing the delegate cause they are weak references.
        event.editor.pickerView.delegate = delegate;
    }

我对具有白色文本的选择器委托的实现是:

代码语言:javascript
复制
export class UIPickerViewDelegateImplementation extends NSObject implements UIPickerViewDelegate {

    static ObjCProtocols = [UIPickerViewDelegate];
    static new(): UIPickerViewDelegateImplementation {
        return <UIPickerViewDelegateImplementation> super.new();
    }

    private _owner: any; // TKDataFormPickerViewEditor

    initWithOwner(owner: any /* TKDataFormPickerViewEditor */): UIPickerViewDelegateImplementation {
        this._owner = owner;

        return this;
    }

    pickerViewTitleForRowForComponent(pickerView: UIPickerView, row: number, component: number): string {
        return this._owner.options[row];
    }

    pickerViewDidSelectRowInComponent(pickerView: UIPickerView, row: number, component: number): void {
        this._owner.selectedIndex = row;
        this._owner.owner.editorValueChanged(this._owner);
    }

    pickerViewAttributedTitleForRowForComponent(pickerView: UIPickerView, row: number, component: number): NSAttributedString {
        const title = this.pickerViewTitleForRowForComponent(pickerView, row, component);
        const attr = NSDictionary.dictionaryWithObjectForKey(UIColor.whiteColor, NSForegroundColorAttributeName);
        const res = NSAttributedString.alloc().initWithStringAttributes(title, attr);

        return res;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56472009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档