2015-08-16 5 views
-2

Хорошо, я прочитал много статей об этом, но я хочу получить предложение для этого. Так что мой tableViewCell выглядит следующим образом:Как передавать данные из TableViewCell в ViewController с помощью Swift

enter image description here

если пользователь нажмите на имя Akshay Kheveria он будет выполнять SEGUE в контроллер просмотра и показать профиль Akshay Kheveria. Так что я думаю, это просто передать objectId пользователя и загрузить требуемые данные из parse в другой viewController. Итак:

  1. Как я могу это сделать?
  2. Это правильный способ сделать это или что-то еще об этом знать?

Спасибо за ваше время.

+0

У вас есть пользовательские данные только идентификатор объекта пользователя при переходе? – rishi

+0

Хорошие ответы здесь о том, как назначить свойство в целевом vc, но оба они предлагают назначить свойство id. Если целевому vc нужен PFObject (возможно), и у вас есть один (возможно), то назначьте PFObject. – danh

ответ

1

Ключом является использование метода (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender. Начните с создания общественной собственности (файл заголовка) в вашем ViewController:

@property (nonatomic) NSNumber *profileId; 

Сохранить сота, выбранная пользователем, когда он прикоснулся к псевдо, как это, например:

- (void)tableView:(UITableView *)tableView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 

    [self performSegueWithIdentifier:@"ToProfile" sender:indexPath]; 
} 

Тогда

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSIndexPath* indexPath = (NSIndexPath *)sender; 
    SomeObject* tableViewItem = [self.data objectAtIndex:indexPath.row]; 
    if ([[segue identifier] isEqualToString:@"ToProfile"]) { 
     ProfileViewController *profile = [segue destinationViewController]; 

     profile.profileId = tableViewItem.profileId; 
    } 
} 

Теперь вы можете получить доступ к свойству profileId из вашего ViewController.

+0

Когда сеанс запускается с помощью выбора ячейки, параметр 'sender' является самой выбранной ячейкой. Поэтому нет необходимости хранить свойство для выбранной ячейки, и вы можете использовать '[self.tableView indexPathForCell: sender]' для извлечения индекса в вашем методе 'prepareForSegue: sender:'. – andreamazz

+0

О, хорошо! Я не знал. Спасибо – Max

+0

вы можете объяснить это в Свифт? –

3
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "ToProfile" 
    { 
    if let destinationVC = segue.destinationViewController as? ProfileViewController{ 
     destinationVC.profileId = yourObjectId 
    } 
    } 
} 

Попробуйте это ..