Ios 无法使用委托更新UITableViewCell中的标签
我的应用程序中有一个食物日记,可以记录你每天吃的食物,但我正在努力更新我的Ios 无法使用委托更新UITableViewCell中的标签,ios,swift,uitableview,Ios,Swift,Uitableview,我的应用程序中有一个食物日记,可以记录你每天吃的食物,但我正在努力更新我的UITableViewCell中的卡路里标签。我的应用程序在我按下“保存到食物日记”时崩溃,错误如下: "fatal error: unexpectedly found nil while unwrapping an Optional value" 以下是我在我的PopUpVC(UIViewController中的代码,用户可以看到这些代码来输入FoodName和carries) 然后我将来自食物和卡路里UItextFi
UITableViewCell
中的卡路里标签。我的应用程序在我按下“保存到食物日记”时崩溃,错误如下:
"fatal error: unexpectedly found nil while unwrapping an Optional value"
以下是我在我的PopUpVC
(UIViewController
中的代码,用户可以看到这些代码来输入FoodName
和carries
)
然后我将来自食物和卡路里UItextFields
的输入传递到我的FoodDiaryVC
:
func didAddRow(name: String, calories: String) {
cals.calories.text = calories
print(name)
print(calories)
}
我添加了显示错误和ViewController
的图片。我不确定它为什么会发现/返回零?我基本上只是试图将我的卡路里标签设置为输入量(或一天中卡路里的累积量)
您的
cals
或carries
对象为nil
,导致崩溃。您未在发布的代码中包含此对象,但请确保在访问它之前已实例化该对象。您好,我不知道是什么原因导致了崩溃,但我确信可以对其进行调试。按照我的建议执行以下步骤。将方法didAddRow更改为
func didAddRow(name: String, calories: String) {
if(calories.characters.count != 0 && cal != nil) {
cal.calories.text = calories
}
print(name)
print(calories)
}
如果这不能给你合适的结果,那么试着用这种方法打印卡路里和卡路里。检查出口并在此方法中设置断点。确保cals或卡路里对象为nill,正如@oskar所说,确保在访问这些var之前创建了这些var的对象。是我的FoodDiaryVC实现了弹出窗口的委托@dipi删除了之前与委托相关的注释。请不要引用以前的评论。cals是对我的uitableviewcell的引用,我已经用我的caloriesforCell的图片更新了帖子。所以基本上我有cals作为cals=卡路里forcell()@vadian@thelegendary3请不要发布屏幕截图,发布代码/文本。我将单元格设置为let cals=caroriesfordiary(),作为我的FoodDiaryVC中的类级别变量。然后在委托函数中,我将标签抓取为cals.calorieslabel.text。这不是正确的方法吗?你能显示卡路里的热量计算(或结构)吗?你没有显示
caroriesfordiary()
的功能,所以说不出有什么问题。不管怎样,像这样访问单元及其接口元素都不是一个好主意。相反,您应该保留一个单独的模型逻辑并重新加载tableview以反映值的更改。@我已经更新了我的帖子!caloriesforDiary是我的UITableviewcell,它有标签AHH,有u,cals变量在哪里声明?看来问题并没有你们在这里提出的那个么大。请说明清楚的问题,认为你们试图在tableview上设置新行,但你们在错误的地方,若可能的话,上传全部三个类。单元格、viewcontroller和弹出式视图控制器。因此,由于我创建了UITableViewCell的新实例,它将删除导致崩溃的插座。我不知道如何对类进行适当的引用,使其内部可以有值。有什么想法吗?
func didAddRow(name: String, calories: String) {
if(calories.characters.count != 0 && cal != nil) {
cal.calories.text = calories
}
print(name)
print(calories)
}