This code is breaking my simulator with a similar error.
[lua]
–
– main.lua
display.setStatusBar( display.HiddenStatusBar )
– Your code here
local taskManager = require(“taskmgr”)
widget = require “widget”
– Set the widget theme
widget.setTheme( “theme_ios” )
local widgetHelper = require(“widgethelper”)
local btnDeleteRow = nil
local pageList = display.newGroup()
local pageEdit = display.newGroup()
taskManager.addTask(taskManager.makeTask(“take out laundry”))
taskManager.addTask(taskManager.makeTask(“wash the trash”))
taskManager.addNewTask(“eat the dishes”)
print(tostring(#taskManager.taskList))
taskManager.debugTaskDescs()
pageList:insert( widgetHelper.makeTitleBar(0,“To Do App”) )
pageEdit:insert( widgetHelper.makeTitleBar(0,“Edit Task”) )
local list = widget.newTableView{
top = 44,
height = 366,
maskFile = “assets/mask-320x366.png”
}
pageList:insert(list)
local function onDeletePress(event)
–booooo
if(event.phase == “release”) then
local r = event.target.rowNum
print(tostring®)
taskManager.deleteTask®
list:deleteRow®
end
return true
end
– function below handles row touches, swipes, etc.
local function onRowTouch( event )
print (“row touched:” … event.phase)
local row = event.target–event.row
local text = row.textObj
local rowNum = event.index
– if event.phase == “press” or event.phase == “tap” then
– if text then
– text.text = "Touched row with id " … row.id
– end
– elseif event.phase == “swipeLeft” then
– if text then
– text.text = “Swiped row " … event.index … " LEFT.”
– end
if(event.phase == “tap”) then
pageList.isVisible = false
pageEdit.isVisible = true
elseif event.phase == “swipeRight” then
– create a delete button and then add it to the view of the row
if(btnDeleteRow ~= nil) then
btnDeleteRow:removeSelf()
end
btnDeleteRow = widgetHelper.addDeleteButton(0,0,onDeletePress)
btnDeleteRow.rowNum = rowNum
event.view:insert(btnDeleteRow)
btnDeleteRow:setReferencePoint(display.CenterRightReferencePoint)
btnDeleteRow.y = row.height * 0.5
btnDeleteRow.x = row.width - 10
if text then
text.text = “Swiped row " … event.index … " RIGHT.”
end
end
– elseif event.phase == “release” then
– -- force row re-render on next TableView update
– row.reRender = true
– end
– reposition text
if text then
text:setReferencePoint( display.CenterLeftReferencePoint )
text.x = 25
text.y = row.height * 0.5
end
end
– function below handles row rendering
local function onRowRender( event )
local group = event.view
local row = event.target
local taskNum = event.index
local desc = taskManager.getTaskDescription(taskNum)
local text = display.newText( desc, 0, 0, native.systemFont, 18 )
text:setReferencePoint( display.CenterLeftReferencePoint )
text:setTextColor(0,0,255)
text.x = 25
text.y = row.height * 0.5
– you must insert any display objects into event.view group
group:insert( text )
end
local addTaskButtonEvent = function(event)
if event.phase == “release” then
taskManager.addNewTask(“new task”)
– insert the row
list:insertRow({
id = “unique-row-id”,
onRender = onRowRender,
onEvent = onRowTouch
})
taskManager.debugTaskDescs()
end
end
local button = widgetHelper.addButton(“Add task”, 40, display.contentHeight - 60, addTaskButtonEvent)
pageList:insert(button)
if(taskManager.getNumTasks() > 0) then
for i = 1,taskManager.getNumTasks() do
– insert the row
list:insertRow({
id = “unique-row-id”,
onRender = onRowRender,
onEvent = onRowTouch
})
end
end
pageEdit.isVisible = false
txtTaskDesc = widgetHelper.makeTextField(80, “desc”, “blah”, nil)
pageEdit:insert(txtTaskDesc)
[/lua]
[lua]
– our widget helper
local w = {}
local function makeTitleBar(yloc, label)
– create a gradient for the top-half of the toolbar
local group = display.newGroup()
local toolbarGradient = graphics.newGradient( {168, 181, 198, 255 }, {139, 157, 180, 255}, “down” )
– create toolbar to go at the top of the screen
local titleBar = widget.newTabBar{
top = yloc, – !!! CHANGED THIS TO AN ARGUMENT !!!
gradient = toolbarGradient,
bottomFill = { 117, 139, 168, 255 },
height = 44
}
group:insert(titleBar)
– create embossed text to go on toolbar !!! CHANGED TEXT TO ARGUMENT !!!
local titleText = display.newEmbossedText( label, 0, 0, native.systemFontBold, 20 )
titleText:setReferencePoint( display.CenterReferencePoint )
titleText:setTextColor( 255 )
titleText.x = 160
titleText.y = titleBar.y
group:insert(titleText)
– create a shadow underneath the titlebar (for a nice touch)
local shadow = display.newImage( “assets/shadow.png” )
shadow:setReferencePoint( display.TopLeftReferencePoint )
shadow.x = 0
shadow.y = (44+yloc)
shadow.xScale = 320 / shadow.contentWidth
shadow.alpha = 0.45
group:insert(shadow)
return group
end
w.makeTitleBar = makeTitleBar
–[[
call with a table that specifies at LEAST
label = “Add Task”,
left = 40, – # of px in from the left
top = display.contentHeight - 60,
onEvent = addTaskButtonEvent
–]]
local function addButton( btnLabel, btnLeft, btnTop, btnEventHandler )
tblButtonAttributes = {}
tblButtonAttributes.width = 150
tblButtonAttributes.height = 30
tblButtonAttributes.cornerRadius = 5
tblButtonAttributes.emboss = true
tblButtonAttributes.label = btnLabel
tblButtonAttributes.left = btnLeft
tblButtonAttributes.top = btnTop
tblButtonAttributes.onEvent = btnEventHandler
local button = widget.newButton(tblButtonAttributes)
return button
end
w.addButton = addButton
local function addDeleteButton( btnLeft, btnTop, btnEventHandler )
tblButtonAttributes = {}
tblButtonAttributes.width = 60
tblButtonAttributes.height = 30
tblButtonAttributes.cornerRadius = 5
tblButtonAttributes.emboss = true
tblButtonAttributes.label = “Delete”
tblButtonAttributes.left = btnLeft
tblButtonAttributes.top = btnTop
tblButtonAttributes.onEvent = btnEventHandler
– THIS IS THE THING THAT MAKES IT RED
tblButtonAttributes.style = “redLarge”
local button = widget.newButton(tblButtonAttributes)
return button
end
w.addDeleteButton = addDeleteButton
local function makeTextField(yLoc, strLabel, tbDefault, submitHandler)
– should be the right font and the right size, so…
local gap = 10
local xGap = 10
local label = display.newText( strLabel, xGap, yLoc, native.systemFontBold, 20 )
local field = native.newTextField( xGap, yLoc + label.height + gap, display.contentWidth - (2*xGap) , 30 )
field.font = native.newFont( native.systemFontBold, 18 )
local function editTaskDesc( event )
if ( “began” == event.phase ) then
– This is the “keyboard has appeared” event
– In some cases you may want to adjust the interface when the keyboard appears.
elseif ( “ended” == event.phase ) then
– This event is called when the user stops editing a field: for example, when they touch a different field
elseif ( “editing” == event.phase ) then
elseif ( “submitted” == event.phase ) then
– This event occurs when the user presses the “return” key (if available) on the onscreen keyboard
print( field.text )
submitHandler(event)
– Hide keyboard
native.setKeyboardFocus( nil )
end
end
field:addEventListener( “userInput”, editTaskDesc)
field.text = tbDefault – set default text
local grp = display.newGroup()
grp:insert(field)
grp:insert(label)
return grp
end
w.makeTextField = makeTextField
return w
[/lua]
[lua]
– task manager “API”
local t = {
taskList = {}
}
local function makeTask(desc)
local task = {
description = desc,
dateDue = 0,
dateRecorded = 0,
category = “”,
priority = 0,
notes = “”
}
return task
end
t.makeTask = makeTask
local function addTask(task)
–adds the new task to the end of the task list
t.taskList[#t.taskList+1] = task
end
t.addTask = addTask
local function addNewTask(desc)
local tmp = makeTask(desc)
addTask(tmp)
end
t.addNewTask = addNewTask
local function debugTaskDescs()
– go through every entry in taskList and print the description
for i = 1, #t.taskList do
print(t.taskList[i].description)
end
end
t.debugTaskDescs = debugTaskDescs
local function getTaskDescription(taskNum)
return t.taskList[taskNum].description
end
t.getTaskDescription = getTaskDescription
local function getNumTasks()
return #t.taskList
end
t.getNumTasks = getNumTasks
local function deleteTask(taskNum)
table.remove(t.taskList,taskNum)
end
t.deleteTask = deleteTask
return t
[/lua] [import]uid: 138235 topic_id: 29608 reply_id: 145349[/import]