iphone SDK: лучший способ выбрать два объекта (для сравнения) - PullRequest
0 голосов
/ 31 октября 2011

У меня есть несколько объектов, каждый из которых имеет ряд атрибутов.Я бы хотел, чтобы пользователь выбрал два объекта, а затем приложение отобразит сравнение атрибутов соответствующего объекта.Мне трудно решить, как лучше выбрать два объекта.Я хотел бы использовать UITableView, но как выбрать две ячейки, прежде чем продолжить?Кроме того, я мог бы отображать кнопки UIB, но, опять же, как лучше выбрать два, прежде чем продолжить?Возможно, есть другой способ, который не происходит со мной.

Идеи ценятся.

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Убедитесь, что ваш 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;
}
2 голосов
/ 31 октября 2011

Вы можете использовать UITableView и поставить галочку accessoryView, а затем нажать кнопку «Продолжить» после выбора двух объектов.

Однако, если вы хотите убедиться, что выбраны ровно два (не более) объекта, вы можете использовать два UIPicker s, один над другим, чтобы при использовании можно было выбрать два таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...