alibaba/wax

How can I update my lua script while app is running?

itliming opened this issue · 1 comments

Hi,here is my problem:
I use the method "wax_start" to init wax,just like this:
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *dir = [doc stringByAppendingPathComponent:@"lua"];

NSString *pp = [[NSString alloc ] initWithFormat:@"%@/?.lua;%@/patch/?.lua;", dir, dir];
setenv(LUA_PATH, [pp UTF8String], 1);
wax_start("patch", nil);

"patch" is a lua file named patch.lua ,
require "MainViewController" require "SecondViewController"

MainViewController.lua:
waxClass{"MainViewController", UIViewController}

function viewDidLoad(self)

self:ORIGviewDidLoad(self)
self:addDeletePatchButton(self)

end

function setBackGroundColor(self)
self:view():setBackgroundColor(UIColor:yellowColor())
end

function addDeletePatchButton(self)
local deletebutton = UIButton:buttonWithType(UIButtonTypeCustom)
deletebutton:setFrame(CGRect(100, 300, 200, 100))
deletebutton:setTitle_forState("second",UIControlStateNormal)
deletebutton:setTitleColor_forState(UIColor:blueColor(),UIControlStateNormal)
deletebutton:addTarget_action_forControlEvents(self,"second",UIControlEventTouchUpInside)
self:view():addSubview(deletebutton)
end

function second(self)
local secondController = SecondViewController:init()
self:presentViewController_animated_completion(secondController,YES,nil)
end

SecondViewController.lua:
waxClass{"SecondViewController", UIViewController}
function viewDidLoad(self)
self:setBackGroundColor(self)
self:addDeletePatchButton(self)
end

function setBackGroundColor(self)

self:view():setBackgroundColor(UIColor:greenColor())

end

function addDeletePatchButton(self)

local deletebutton = UIButton:buttonWithType(UIButtonTypeCustom)
deletebutton:setFrame(CGRect(100, 300, 200, 100))
deletebutton:setTitle_forState("updatedback7",UIControlStateNormal)
deletebutton:setTitleColor_forState(UIColor:blackColor(),UIControlStateNormal)
deletebutton:addTarget_action_forControlEvents(self,"updatedback",UIControlEventTouchUpInside)

self:view():addSubview(deletebutton)

end

function updatedback(self)
self:dismissViewControllerAnimated_completion(YES,nil)
end

Now I want to update the code of MainViewController.lua,to change the action of function "second" ,so I download the new MainViewController.lua file from Server ,How can I make the new file work?

after the files updated, you can use wax_runLuaFile to run the file again.