问题:
我开发了测验应用。在应用程序中,在一个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
答案 0 :(得分:0)
确定。你必须做三件事:
转到您的故事板并将来自resultsviewcontroller的segue提供给analyzeviewcontroller一个标识符" AnalysisScreen"
转到您的resultsviewcontroller.m并实施以下方法:
Quizcell.TotalQuestions.backgroundColor = [UIColor whiteColor];
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’s
为1, 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];
}
通过这种方式,您可以存储为每个问题选择的答案信息,并根据存储在列表中相应对象中的信息显示它们。