好的,我在UITableView中选择了行时推送了一个detailView。在detailView中,我设置了som数据并将其传递给webservice。我想在推送detailView之前或者它将消失时检索一些数据。根据检索到的数据,我将UIImage设置为指标。
我想知道如何确定indexpath.row推送了detailView并将其用于设置UIImage。这可能吗?
我有一个UISegmentedControl,它为UITableView加载两个不同的数据源。
为了测试我在推送detailView时传递indexpath.row并且如果应该显示UIImage则回调到UITableView类以及布尔值。
但我的问题是当UITableView加载时indexpath.row为0。 当来回更改数据源并使用它传递indexpath.row时,指示符将显示在错误的行上。
该表的两个数据源是:
if (index == 0) {
dictionary = [firstArray objectAtIndex:indexPath.row];
}
else {
dictionary = [secondArray objectAtIndex:indexPath.row];
}
然后我设置了该行的指标(稍后将是UIImage):
if (indexPath.row == selectedIndex) {
cell.indicator.text = @"Begin";
}
当在 didSelectRowAtIndexPath 中推送detailView时,我传入了indexPath.row:
NSInteger rowIndex = indexPath.row;
[self.detailViewController initWithDetailsSelected:rowIndex:dictionary];
完成detailView后,UITableView类会收到回调:
- (void)processAttendanceSuccessful:(BOOL)successful:(NSInteger)_selectedIndex{
self.selectedIndex = _selectedIndex;
}
因此,基于布尔值,应该在UITableView中显示正确行的UIImage。 我有什么建议可以解决这个问题。在详细视图中设置一些值并在UITableView中显示特定行的一些数据一定很常见,但是很难找到任何好的教程。 我只找到如何将数据传递到detailView,我没有任何问题。
先谢谢大家。
答案 0 :(得分:1)
请勿取消选择tableView:didSelectRowAtIndexPath:
中的行。当您返回此视图控制器时,只需使用indexPathForSelectedRow
对象的UITableView
方法。
但从长远来看,这没什么意义。由于表视图重用这些单元格,因此您还需要记住具有该图像的行。您可能必须为此维护一个数组。在这种情况下,您可以将数组和索引路径传递给详细视图控制器并在那里更新它们,或者使用委托或通知机制从表视图控制器中更新数组。
答案 1 :(得分:0)
我会使用int的ivar,使用负值来表示空值选择:
@interface MyController : UIViewController {
int lastSelection;
}
...
@end
@implementation MyController
...
- (void)initWithBlablabla{
...
lastSelection = -1;
}
...
@end
但是,我认为你应该更好地重新考虑你的设计,参考KVO编程指南。在一般的MVC模式中,控制器不是存储模型状态的正确位置。