Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 确定从UITableView的detailView返回时最后选择的行_Objective C_Cocoa Touch_Uitableview - Fatal编程技术网

Objective c 确定从UITableView的detailView返回时最后选择的行

Objective c 确定从UITableView的detailView返回时最后选择的行,objective-c,cocoa-touch,uitableview,Objective C,Cocoa Touch,Uitableview,确定在UITableView中选择行时,我推送detailView。在detailView中,我设置了som数据并将其传递给Web服务。我想在推送detailView之前或者在它被取消显示时检索一些数据。根据检索到的数据,我将设置UIImage作为指示器 我想知道如何确定detailView的indexpath.row,并使用它来设置UIImage。这可能吗 我有一个UISegmentedControl,它为UITableView加载两个不同的数据源 为了进行测试,我在推送detailView时

确定在UITableView中选择行时,我推送detailView。在detailView中,我设置了som数据并将其传递给Web服务。我想在推送detailView之前或者在它被取消显示时检索一些数据。根据检索到的数据,我将设置UIImage作为指示器

我想知道如何确定detailView的indexpath.row,并使用它来设置UIImage。这可能吗

我有一个UISegmentedControl,它为UITableView加载两个不同的数据源

为了进行测试,我在推送detailView时传递indexpath.row,如果应该显示UIImage,则回调UITableView类以及布尔值

但我的问题是,当UITableView加载时,indexath.row为0。 当来回更改数据源并传递indexpath.row时,指示器将显示在错误的行上

该表的两个数据源是:

if (index == 0) {

    dictionary = [firstArray objectAtIndex:indexPath.row];
}
else {

    dictionary = [secondArray objectAtIndex:indexPath.row]; 
}
然后,我为该行设置指示器(稍后将是UIImage):

当推送detailView时,didselectRowatineXpath我传入indexPath.row:

NSInteger rowIndex = indexPath.row;
[self.detailViewController initWithDetailsSelected:rowIndex:dictionary];
完成detailView后,UITableView类将接收回调:

 - (void)processAttendanceSuccessful:(BOOL)successful:(NSInteger)_selectedIndex{

self.selectedIndex = _selectedIndex;
 }
因此,基于布尔值,应在UITableView中为正确的行显示UIImage。 你有什么建议吗。在detailedView中设置一些值并在UITableView中显示特定行的一些数据是很常见的,但是很难找到关于这方面的好教程。 我只知道如何将数据传递到detailView,我对此没有任何问题


提前感谢大家

我将使用int的ivar,使用负值表示空选择:

@interface MyController : UIViewController {

int lastSelection;

}
...
@end

@implementation MyController
...
- (void)initWithBlablabla{
    ...
    lastSelection = -1;
}

...

@end

然而,我认为您最好参考KVO编程指南重新考虑您的设计。在一般的MVC模式中,控制器不是存储模型状态的正确位置。

不要取消选择
表视图中的行:didSelectRowAtIndexPath:
。返回此视图控制器时,只需使用
UITableView
对象的
indexPathForSelectedRow
方法

但从长远来看,这毫无意义。由于表视图重用了这些单元格,因此还需要记住包含图像的行。您可能需要为此维护一个数组。在这种情况下,您可以将数组和索引路径传递给详细视图控制器并在那里更新它们,或者使用委托或通知机制从表视图控制器中更新数组

@interface MyController : UIViewController {

int lastSelection;

}
...
@end

@implementation MyController
...
- (void)initWithBlablabla{
    ...
    lastSelection = -1;
}

...

@end