Merge pull request #2262 from NativeScript/raikov/fix-actionbar

Fixed a crash in action bar on iOS 9.3
This commit is contained in:
tzraikov
2016-06-08 18:44:31 +03:00

View File

@@ -112,31 +112,23 @@ export class ActionBar extends common.ActionBar {
} }
private populateMenuItems(navigationItem: UINavigationItem) { private populateMenuItems(navigationItem: UINavigationItem) {
var items = this.actionItems.getVisibleItems(); let items = this.actionItems.getVisibleItems();
var leftBarItems = []; let leftBarItems = [];
var rightBarItems = []; let rightBarItems = [];
for (let i = 0; i < items.length; i++) {
for (var i = 0; i < items.length; i++) { let barButtonItem = this.createBarButtonItem(items[i]);
var barButtonItem = this.createBarButtonItem(items[i]);
if (items[i].ios.position === enums.IOSActionItemPosition.left) { if (items[i].ios.position === enums.IOSActionItemPosition.left) {
leftBarItems.push(barButtonItem); leftBarItems.push(barButtonItem);
} }
else { else {
rightBarItems.push(barButtonItem); rightBarItems.splice(0, 0, barButtonItem);
} }
} }
navigationItem.setLeftBarButtonItemsAnimated(<any>leftBarItems, false);
var leftArray: NSMutableArray = leftBarItems.length > 0 ? NSMutableArray.new() : null; navigationItem.setRightBarButtonItemsAnimated(<any>rightBarItems, false);
leftBarItems.forEach((barItem, i, a) => leftArray.addObject(barItem)); if (leftBarItems.length > 0) {
// Right items should be added in reverse because they are added from right to left
var rightArray: NSMutableArray = rightBarItems.length > 0 ? NSMutableArray.new() : null;
rightBarItems.reverse();
rightBarItems.forEach((barItem, i, a) => rightArray.addObject(barItem));
navigationItem.leftItemsSupplementBackButton = true; navigationItem.leftItemsSupplementBackButton = true;
navigationItem.setLeftBarButtonItemsAnimated(leftArray, true); }
navigationItem.setRightBarButtonItemsAnimated(rightArray, true);
} }
private createBarButtonItem(item: dts.ActionItem): UIBarButtonItem { private createBarButtonItem(item: dts.ActionItem): UIBarButtonItem {