mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-17 04:41:36 +08:00
Merge pull request #825 from NativeScript/segmented-bar-event
segmented bar selectedIndexChanged fix
This commit is contained in:
@ -16,3 +16,7 @@ export function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar):
|
|||||||
|
|
||||||
return isValid;
|
return isValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setNativeSelectedIndex(bar: segmentedBarModule.SegmentedBar, index: number): void {
|
||||||
|
(<android.widget.TabHost>bar.android).setCurrentTab(index);
|
||||||
|
}
|
@ -2,5 +2,6 @@
|
|||||||
import segmentedBarModule = require("ui/segmented-bar");
|
import segmentedBarModule = require("ui/segmented-bar");
|
||||||
|
|
||||||
export declare function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number;
|
export declare function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number;
|
||||||
|
export declare function setNativeSelectedIndex(bar: segmentedBarModule.SegmentedBar, index: number): void;
|
||||||
|
|
||||||
export declare function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar): boolean;
|
export declare function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar): boolean;
|
||||||
|
@ -12,3 +12,8 @@ export function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar):
|
|||||||
|
|
||||||
return isValid;
|
return isValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setNativeSelectedIndex(bar: segmentedBarModule.SegmentedBar, index: number): void {
|
||||||
|
bar.ios.selectedSegmentIndex = index;
|
||||||
|
(<UISegmentedControl>bar.ios).sendActionsForControlEvents(UIControlEvents.UIControlEventValueChanged);
|
||||||
|
}
|
@ -221,3 +221,32 @@ export var testSelectedIndexChangedIsReisedCorrectlyIfSelectedIndexIsSet = funct
|
|||||||
TKUnit.assertEqual(newIndex, 9);
|
TKUnit.assertEqual(newIndex, 9);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export var testSelectedIndexChangedIsReisedCorrectlyIfSelectedIndexIsSetNative = function () {
|
||||||
|
var oldIndex;
|
||||||
|
var newIndex;
|
||||||
|
var segmentedBar = _createSegmentedBar();
|
||||||
|
|
||||||
|
segmentedBar.on(segmentedBarModule.SegmentedBar.selectedIndexChangedEvent, (args: segmentedBarModule.SelectedIndexChangedEventData) => {
|
||||||
|
oldIndex = args.oldIndex;
|
||||||
|
newIndex = args.newIndex;
|
||||||
|
});
|
||||||
|
|
||||||
|
segmentedBar.items = _createItems(10);
|
||||||
|
|
||||||
|
helper.buildUIAndRunTest(segmentedBar, function (views: Array<viewModule.View>) {
|
||||||
|
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
||||||
|
|
||||||
|
segmentedBarTestsNative.setNativeSelectedIndex(segmentedBar, 6);
|
||||||
|
TKUnit.assertEqual(oldIndex, 0);
|
||||||
|
TKUnit.assertEqual(newIndex, 6);
|
||||||
|
|
||||||
|
segmentedBarTestsNative.setNativeSelectedIndex(segmentedBar, 3);
|
||||||
|
TKUnit.assertEqual(oldIndex, 6);
|
||||||
|
TKUnit.assertEqual(newIndex, 3);
|
||||||
|
|
||||||
|
segmentedBarTestsNative.setNativeSelectedIndex(segmentedBar, 9);
|
||||||
|
TKUnit.assertEqual(oldIndex, 3);
|
||||||
|
TKUnit.assertEqual(newIndex, 9);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -3,6 +3,7 @@ import common = require("ui/segmented-bar/segmented-bar-common");
|
|||||||
import dependencyObservable = require("ui/core/dependency-observable");
|
import dependencyObservable = require("ui/core/dependency-observable");
|
||||||
import proxy = require("ui/core/proxy");
|
import proxy = require("ui/core/proxy");
|
||||||
import types = require("utils/types");
|
import types = require("utils/types");
|
||||||
|
import observable = require("data/observable");
|
||||||
|
|
||||||
global.moduleMerge(common, exports);
|
global.moduleMerge(common, exports);
|
||||||
|
|
||||||
@ -17,13 +18,11 @@ function onSelectedIndexPropertyChanged(data: dependencyObservable.PropertyChang
|
|||||||
if (types.isNumber(index)) {
|
if (types.isNumber(index)) {
|
||||||
if (index >= 0 && index <= view.items.length - 1) {
|
if (index >= 0 && index <= view.items.length - 1) {
|
||||||
view.android.setCurrentTab(index);
|
view.android.setCurrentTab(index);
|
||||||
|
view.notify({ eventName: SegmentedBar.selectedIndexChangedEvent, object: view, oldIndex: data.oldValue, newIndex: data.newValue });
|
||||||
} else {
|
} else {
|
||||||
view.selectedIndex = undefined;
|
view.selectedIndex = undefined;
|
||||||
throw new Error("selectedIndex should be between [0, items.length - 1]");
|
throw new Error("selectedIndex should be between [0, items.length - 1]");
|
||||||
}
|
}
|
||||||
|
|
||||||
var args = { eventName: SegmentedBar.selectedIndexChangedEvent, object: view, oldIndex: data.oldValue, newIndex: data.newValue };
|
|
||||||
view.notify(args);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(<proxy.PropertyMetadata>common.SegmentedBar.selectedIndexProperty.metadata).onSetNativeValue = onSelectedIndexPropertyChanged;
|
(<proxy.PropertyMetadata>common.SegmentedBar.selectedIndexProperty.metadata).onSetNativeValue = onSelectedIndexPropertyChanged;
|
||||||
@ -146,12 +145,7 @@ export class SegmentedBar extends common.SegmentedBar {
|
|||||||
onTabChanged: function (id: string) {
|
onTabChanged: function (id: string) {
|
||||||
var bar = that.get();
|
var bar = that.get();
|
||||||
if (bar) {
|
if (bar) {
|
||||||
var oldIndex = bar.selectedIndex;
|
bar.selectedIndex = parseInt(id);
|
||||||
var newIndex = parseInt(id);
|
|
||||||
|
|
||||||
if (oldIndex !== newIndex) {
|
|
||||||
bar._onPropertyChangedFromNative(SegmentedBar.selectedIndexProperty, newIndex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user