{ "id": "154418", "key": "TIMOB-20250", "fields": { "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "17706", "name": "Release 5.4.0", "archived": false, "released": true, "releaseDate": "2016-08-11" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2016-04-26T17:33:23.000+0000", "created": "2016-01-19T22:27:35.000+0000", "epic": { "id": 154964, "key": "TIMOB-20416", "name": "Support Hyperloop modules", "summary": "Support Hyperloop modules in Titanium Mobile", "color": { "key": "color_8" }, "done": false }, "priority": { "name": "High", "id": "2" }, "labels": [ "hyperloop", "proxy" ], "versions": [], "issuelinks": [], "assignee": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-16T22:50:34.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "13715", "name": "Hyperloop", "description": "Hyperloop project" }, { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "We added support for adding a {{HyperloopViewProxy}} to the Titanium view hierarchy, but not for removing them again. We should do a similar check like [here|https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/TiViewProxy.m#L191] to get the {{TiViewProxy}} correctly.\r\n\r\nThe thrown error: {{Invalid type passed to function. expected: TiViewProxy, was: HyperloopClass -\\[TiViewProxy remove:\\] (TiViewProxy.m:266)}}", "attachment": [], "flagged": false, "summary": "Hyperloop: Cannot remove a HyperloopViewProxy from a TiViewProxy", "creator": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "closedSprints": [ { "id": 624, "state": "closed", "name": "2016 Sprint 09 SDK", "startDate": "2016-04-23T00:39:45.452Z", "endDate": "2016-05-07T00:39:00.000Z", "completeDate": "2016-05-09T03:43:10.279Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "380184", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~penrique] Thinking about this issue, would it make sense to check for the HyperloopViewProxy [here|https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/TiViewProxy.m#L286] and call {{setNativeView:nil}} to reset the native view?", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-03-20T14:41:47.000+0000", "updated": "2016-03-20T14:41:47.000+0000" }, { "id": "383474", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/7956", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-04-21T07:11:05.000+0000", "updated": "2016-04-21T07:11:05.000+0000" }, { "id": "383478", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Demo:\r\n{code:javascript}\r\nvar UIView = require(\"UIKit/UIView\"),\r\n UIColor = require(\"UIKit/UIColor\"),\r\n CGRectMake = require(\"CoreGraphics\").CGRectMake,\r\n window = Ti.UI.createWindow({layout: \"vertical\"});\r\n\r\n// HL View\r\nvar view1 = UIView.alloc().initWithFrame(CGRectMake(20,20,100,100));\r\nview1.setBackgroundColor(UIColor.redColor());\r\n\r\n// TI View\r\nvar view2 = Ti.UI.createView({\r\n top: 20,\r\n left: 20,\r\n width: 100, \r\n height: 100,\r\n backgroundColor: \"green\"\r\n});\r\n\r\nvar btn1 = createButton(\"Remove HL View\", function() {\r\n window.remove(view1);\r\n});\r\nvar btn2 = createButton(\"Remove TI View\", function() {\r\n window.remove(view2);\r\n});\r\n\r\nwindow.add(view1);\r\nwindow.add(view2);\r\n \r\nwindow.add(btn1);\r\nwindow.add(btn2);\r\n\r\nwindow.open();\r\n\r\n// Button Helper\r\nfunction createButton(title, cb) {\r\n var btn = Ti.UI.createButton({\r\n title : title,\r\n height: 40,\r\n width: 200,\r\n top: 20,\r\n backgroundColor: \"#fff\"\r\n });\r\n \r\n btn.addEventListener(\"click\", cb);\r\n \r\n return btn; \r\n}\r\n{code}", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-04-21T07:39:04.000+0000", "updated": "2016-04-26T17:34:00.000+0000" }, { "id": "413430", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-16T22:50:34.000+0000", "updated": "2017-03-16T22:50:34.000+0000" } ], "maxResults": 4, "total": 4, "startAt": 0 } } }