我有多个对象,每个对象都有一系列属性。我希望用户选择两个对象,然后应用程序将显示相应对象属性的比较。我很难决定如何最好地选择这两个对象。我会使用UITableView,但如何在继续之前选择两个单元格?或者,我可以显示UIButton,但再次,如何在继续之前选择两个?也许还有另一种方式不会发生在我身上。
赞赏的想法。
答案 0 :(得分:2)
您可以使用UITableView
并使用复选标记accessoryView
,然后在选择两个对象后使用“继续”按钮。
但是,如果你想确保两个对象(不再是)被选中,那么你可以使用两个UIPicker
,一个在另一个之上,所以使用可以选择那两个。
答案 1 :(得分:2)
确保您的tableView允许选择:
myTableView.allowsSelection = YES;
定义两个属性,两个存储第一个和第二个选择索引路径:
@property (nonatomic, retain) NSIndexPath *firstSelection;
@property (nonatomic, retain) NSIndexPath *secondSelection;
每当用户选择一行时设置选择。在这个例子中,我使用FIFO方法进行选择。此外,如果已经进行了两个选择,则显示对象属性:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// push the selections up each time. The selected items will always be the
// last two selections
self.firstSelection = self.secondSelection;
self.secondSelection = indexPath;
// if both selections are not nil, two selections have been made.
if (self.firstSelection && self.secondSelection)
[self showComparisonOfObject:self.firstSelection
withObject:self.secondSelection];
}
最后,在所选行上使用复选标记附件:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = someTextYouDefine;
cell.textLabel.textAlignment = UITextAlignmentCenter;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
// this is where the magic happens
BOOL cellSelected = indexPath == self.firstSelection ||
indexPath == self.secondSelection;
cell.accessoryType = cellSelected ? UITableViewCellAccessoryCheckmark :
UITableViewCellAccessoryNone;
// the following two lines ensure that the checkmark does not cause
// the label to be off-center
cell.indentationLevel = cellSelected ? 1 : 0;
cell.indentationWidth = 20.0f;
return cell;
}