如何在didSelectRowAtIndexPath中将整个索引路径,前一个,前一个和当前选定的索引路径值之前存储到NSArray:方法

时间:2015-05-06 12:36:47

标签: ios objective-c iphone uitableview ios7

问题:

我开发了测验应用。在应用程序中,在一个tableview中有5个问题。问题来自plist文件。每当我在tableview中选择了问题选项时,它就会显示当前所选的index_path值。

但是我想要所有的问题选择,例如在数组中选择1到5个index_path。

我的代码:

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    // what is that code,....?

}

我想:

NSLog(@"whole index_path : %@",array name);

输出:

  

整个index_path:   0   1   0   2   1

3 个答案:

答案 0 :(得分:0)

确定。你必须做三件事:

  1. 转到您的故事板并将来自resultsviewcontroller的segue提供给analyzeviewcontroller一个标识符" AnalysisScreen"

  2. 转到您的resultsviewcontroller.m并实施以下方法:

  3. Quizcell.TotalQuestions.backgroundColor = [UIColor whiteColor];

    1. 转到您的analysisviewcontroller.m并在cellForItemAtIndexPath中替换该行
    2. Question *question = self.currentQuiz[indexPath.row]; Quizcell.TotalQuestions.backgroundColor = (question.selectedResponse == question.correctResponse) ? [UIColor greenColor] : [UIColor redColor];

      使用以下行:

      module my_module implicit none integer :: ndims real, dimension(:), allocatable :: my_data contains subroutine initialize() ndims = ... allocate(my_data(ndims)) end subroutine initialize end module my_module program my_program use my_module implicit none call initialize() .... end program my_program

      希望我帮到你! :)

答案 1 :(得分:0)

创建NSMutableArray并添加index paths作为对象。每当您显示一个问题时,如果它的第一个问题是从数组访问其对象并查看选择了哪个索引路径并将该行设置为选中,并且类似于其他问题。

但是我建议你不要在数组中保留索引路径,而是创建一个NSObject类,question id, selected answer id作为成员,当你显示一个问题时,用户选择的东西早于访问selected answer id并将其显示为已选中。

答案 2 :(得分:0)

假设您有5个问题,每个问题最多可以有5个选项。

你有一个带有表格视图的屏幕,你一次在表格视图中显示1个带有选项(2 - 5行)的问题,你可以选择让用户导航到下一个问题(在这种情况下你用下一个问题重新加载表格

这是你的设置。

现在,根据我的建议,创建一个NSObject类来保存每个问题的选定选项的信息。

@interface CustomObject : NSObject 
{
    NSInteger   _questionId;
    NSInteger   _answerId;
}
@property (nonatomic,readwrite,assign) NSInteger questionId;
@property (nonatomic,readwrite,assign) NSInteger answerId;

@end

#import "CustomObject.h”

@implementation CustomObject

@synthesize questionId = _questionId, answerId = _answerId;

-(id) initWithQuestionId:(NSUInteger)qId answerId:(NSUInteger)aId
{
    if( (self=[super init]) ) {
        _questionId = qId;
        _answerId = aId;
    }
    return self;
}

@end

现在假设有5个问题,id’s1, 2, 3, 4, 5,最初未选择任何答案,因此请将selected answer id的不适用ID设为-1

在班级中创建NSMutableArray,将表格视图显示为

NSMutableArray *m_selectedAnsInfoList;

将上面的数组初始化为

m_selectedAnsInfoList = [NSMuatbleArray alloc] init];

最初为每个问题创建CustomObject类的对象

(假设我们有5 question所以questionCount = 5

for (int i=1; i <= questionCount : i++)// will iterate for 5 times
{     
      //create instance of CustomObject with current iteration count as question id and 
      // initially -1 for answer id, as for the first time no answer will be selected
      CustomObject *obj = [[CustomObject alloc] initWithQuestionId:i answerId:-1];
     // add object to the array
     [m_selectedAnsInfoList addObject:obj];
     [obj release];
}

您创建表格视图,将答案显示为问题的行,最初您将所有行显示为未选中。

didSelectRowAtIndexPath内:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
     // currentQuestionId keeps id of the table view showing current question
     // using which access the questionInfoObject
     obj = [m_selectedAnsInfoList objectAtIndex:currentQuestionId];
     //  set answer id in object
     obj.answerId = indexPath.row; (from 0 to (number of answers - 1));
     // replace old object with updated obj in array as
     [m_selectedAnsInfoList replaceObject:obj atIndex:currentQuestionId];
}

通过这种方式,您可以存储为每个问题选择的答案信息,并根据存储在列表中相应对象中的信息显示它们。