1

请参阅自定义选择器的截图:创建自定义选择器控件

screenshot

我知道有没有办法风格钛选取器控件。这个选择器只需要在iOS上工作(仅限iPad)。我想我可以破解TableView控件来代替拾取器来实现所需的样式。这是否合理?我如何捕捉TableViewRows,使其像在典型的拾取器控件中一样处于中心位置?

回答

0

这是一个艰难的我会说你只需要视图和标签和滑动事件(你可以识别是否有人滑动上下),只是改变标签。你可以用一个回调函数,我希望这个代码将帮助你做到这一点(我们已经创建了这个代码的自定义选择器)使用

合金

XML

<View id="numOfIntrusionsPickerContainer" class="compositeWrapperPicker noMargins" > 
<View id="numOfIntrusionsButtonContainer" class="horizontalWrapper"></View> 

CSS

".compositeWrapperPicker" : { 
    height: Ti.UI.SIZE, 
    layout: "composite", 
    width:Ti.UI.SIZE 
}, 
".horizontalWrapper" : { 
    width: Ti.UI.SIZE, 
    height: Ti.UI.SIZE, 
    layout: "horizontal" 
}, 

JS

// INSTANTIATION 
var args = arguments[0] || {}; 
var widthValue = 120; 
var pickerEnabled = true; 

if(args.width != null){ 
    widthValue = args.width; 
} 
if(args.isEnabled != null){ 
    pickerEnabled = args.isEnabled; 
} 
// STYLING 


// ADDITIONS 

// pressed arg can be: true,false,null. false & null are equal 
// true = 'yes' is Pressed at creation, false/null = 'no' is pressed 



var btn_main = Ti.UI.createButton({ 
    top: 5, 
    bottom: 0, 
    left:0, 
    right:5, 
    height: 45, 
    enabled: pickerEnabled, 
    width: widthValue, 
    borderRadius: 5, 
    backgroundImage: "/images/bttn_gray_flex.png", 
    backgroundSelectedImage : "/images/bttn_gray_press_flex.png", 
    backgroundFocusedImage : "/images/bttn_gray_press_flex.png" 
    }); 

var picker_divider = Ti.UI.createImageView({ 
    right: 43, 
    bottom:2, 
    touchEnable:false, 
    focusable:false, 
    image: "/images/Divider_picker.png" 
}); 
var picker_arrows = Ti.UI.createImageView({ 
    right: 16, 
    top: 17, 
    touchEnabled: false, 
    focusable: false, 
    image: "/images/bttn_selector_arrow.png" 
}); 

$.pickerContainer.add(btn_main); 
$.pickerContainer.add(picker_divider); 
$.pickerContainer.add(picker_arrows); 



// CODE 



// LISTENERS 
if(args.callBack != null){ 
    btn_main.addEventListener("click",function(_event){ 
     args.callBack(_event); 
    }); 

}