无法使用Delegate更新UITableViewCell中的标签
我在我的应用程序中有一个食物日记,用于跟踪您每天所吃的食物,但是我正在努力更新我的UITableViewCell
卡路里标签。 我的应用程序崩溃,只要按“保存到食物日记”,错误是:
"fatal error: unexpectedly found nil while unwrapping an Optional value"
这里是我在我的PopUpVC
( UIViewController
,用户可以看到inputFoodName
和Calories
)
protocol AddRowDelegate { func didAddRow(name : String, calories : String) } class PopupVC: UIViewController { var delegate: AddRowDelegate? var section: Int? var caloriesLabel = " " var tableData: [String] = [""] var caloriesCell = caloriesForDiary() @IBOutlet weak var foodTimeLabel: UILabel! @IBOutlet weak var foodPopup2: UIView! @IBOutlet weak var foodPopUp: UIView! @IBOutlet weak var inputFood: UITextField! @IBOutlet weak var inputCals: UITextField! @IBAction func saveToDiary(_ sender: Any) { dismiss(animated: true, completion: nil) delegate?.didAddRow(name: inputFood.text!, calories: inputCals.text!) }
然后我将食物和卡路里UItextFields
的input传递给我的FoodDiaryVC
:
func didAddRow(name: String, calories: String) { cals.calories.text = calories print(name) print(calories) }
我添加了显示错误和ViewController
。 我不知道为什么find/返回零? 我基本上只是试图设置我的卡路里标签等于input(或一整天的积分)
你的cals
或calories
对象是nil
,导致崩溃。 您不在发布的代码中包含此对象,但在访问对象之前请确保对象已实例化。
嗨,我不知道是什么原因导致崩溃,但我确定它可以被debugging。 按照我的build议做下面的步骤。 将方法didAddRow更改为
func didAddRow(name: String, calories: String) { if(calories.characters.count != 0 && cal != nil) { cal.calories.text = calories } print(name) print(calories) }
如果这不能给你比用这种方法打印卡路里和卡路里的合适结果。 用这种方法检查sockets并放置断点。