Любое утверждение IF для переходов на основе выбранной ячейки?

Я хочу знать, есть ли способ навязать оператор if, используя тот же переход. По сути, я хочу, чтобы таблица переходила в одно и то же представление, но на основе выбранной ячейки я хотел бы, чтобы она несла с собой разные данные, относящиеся к выбору пользователей. Например, если пользователь выбирает Даллас в таблице, он не должен отображать информацию о Нью-Йорке.

Нужно ли мне создавать 100 переходов от одного представления к другому или есть ли способ переносить соответствующие данные на основе оператора if?

Любая помощь приветствуется.

Спасибо


person Tanner    schedule 27.06.2013    source источник
comment
вы можете использовать тот же переход и передать информацию, которую хотите отобразить на следующем контроллере представления, в соответствии с выбранной ячейкой. Нет необходимости создавать 100 мореплавателей.   -  person Manish Agrawal    schedule 27.06.2013
comment
Я спрашиваю, как использовать тот же переход для передачи данных на основе выбора ячейки. Любой код или указатели? Я не уверен, как сказать, загрузит ли Даллас этот список, а если Нью-Йорк загрузит этот другой список.   -  person Tanner    schedule 27.06.2013
comment
Я отправил ответ, проверьте, может ли он вам помочь.   -  person Manish Agrawal    schedule 27.06.2013


Ответы (3)


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Assume self.view is the table view
    NSIndexPath *path = [self.tableView indexPathForSelectedRow];
    DetailObject *detail = [self detailForIndexPath:path];
    [segue.destinationViewController setDetail:detail];
}

в зависимости от выбора ячейки просто передайте информацию или объект, который вы хотите отобразить на контроллере представления.

person Manish Agrawal    schedule 27.06.2013
comment
Что такое DetailObject здесь? Я получаю сообщение об ошибке. Использование необъявленной детали идентификатора. Я просто копирую и вставляю строку. Могу ли я сделать что-то вроде If (path == o), а затем отобразить этот список? - person Tanner; 27.06.2013
comment
DetailObject — это объект, который вы хотите сослаться на следующий контроллер представления. - person Manish Agrawal; 27.06.2013
comment
Большое спасибо Уилл. Я просто не уверен, как сказать, что этот список появляется вместо любого из 10 других, использующих это. Можно ли просто поставить if (path == 0) { запустить этот список} else if (path == 1) {вместо этого запустить этот список}? - person Tanner; 28.06.2013

Вот как ты это делаешь....

  1. Когда вы создаете переход, вы даете ему идентификатор.
  2. Когда вы выполняете переход, вызывается следующий метод, поэтому переопределите его

что-то вроде этого,

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"Identifier of your segue"]) {

    //Access the destination controller by, You can cast it to your custom controller class
    UIViewController *destination =  segue.destinationViewController;

    //Do what u want

    }
}

Итак, я считаю, что вы хотите перейти к определенному представлению, когда выбрана ячейка в таблице. Вам нужно создать переход от контроллера, в котором есть таблица, к контроллеру, к которому вы хотите перейти. Не создавайте переход от ячейки к контроллеру.

В tableView:didSelectRowAtIndexPath: вы можете выполнить переход, используя это...

[self performSegueWithIdentifier:@"Your segue Identifier" sender:self];

В любом случае будет вызван prepareForSegue:sender, и вы сможете установить данные для целевого контроллера. Теперь у вас есть только один переход.

Для получения дополнительной информации см. здесь

person akshaynhegde    schedule 27.06.2013
comment
Я считаю, что это будет работать только для одного перехода. Поэтому, если у меня есть переход, идентифицированный как первый, и я хочу вызвать второй, используя этот код, он разбился, говоря, что второй не существует. Разве я не так понял? - person Tanner; 27.06.2013
comment
@Tanner, я отредактировал ответ, это помогает .. ?? - person akshaynhegde; 27.06.2013

ctr + перетащите из вашего табличного контроллера в подробный вид и дайте идентификатор для перехода и используйте следующий метод

  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     if ([segue.identifier isEqualToString:@"showRecipeDetail"]) {
         NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
         RecipeDetailViewController *destViewController = segue.destinationViewController;
         destViewController.recipeName = [recipes objectAtIndex:indexPath.row];
     }
  }
person the1pawan    schedule 27.06.2013