2016-03-08 91 views
0

所以我想從兩個視圖控制器之間的當前indexPath.row傳遞一些數據。這兩個視圖控制器有這樣的:在視圖控制器之間傳遞對象

var imageFile = [PFFile]() 
    var imageText = [String]() 
    var username = [String]() 
    var createdAt = [NSDate]() 
    var objID = [String]() 
    var thumbEmoji = [NSArray]() 
    var loveEmoji = [NSArray]() 
    var laughEmoji = [NSArray]() 
    var handsEmoji = [NSArray]() 
    var pooEmoji = [NSArray]() 
    var comments = [NSArray]() 
    var tagString = "" 

如何傳遞這個在override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)並獲得當前indexPath.row

回答

0

只是通過發送者爲indexPath,你必須將其轉換回在prepareForSegue方法

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
     [self performSegueWithIdentifier:@"identifire" sender:indexPath]; 
} 

而且在prepareForSegue方法是這樣:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"identifire"]) { 
     NSIndexPath *ip = (NSIndexPath *)sender; 
     YourTargetView *gcVC = (YourTargetView *)[segue destinationViewController]; 
     gcVC.passdata = [YourArray objectAtIndex:ip.row]; 
    } 
} 

HTH!

0

let indexPath:NSIndexPath = self.tableView.indexPathForSelectedRow!

0

我建議將您的數據模型移到視圖控制器之外。這樣,你不必傳遞任何東西。當控制器想要更改數據時,它會通知數據模型進行更新。當控制器想要顯示數據時,它會要求數據模型提供它。

然後一條數據模型信息變成「哪個是當前項目」。

1

這會給你indexPath和目的地控制器,所以你可以設置它的數據。 sender也是UITableViewCell實例。這用於默認實現,其中每個單元格都會觸發「延續」。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showDetail" { 
     if let indexPath = self.tableView.indexPathForSelectedRow, let controller = segue.destinationViewController as? [your_destination_controller_type] { 
      //Do you thing here 
     } 
    } 
} 
+0

我使用的CollectionView,不是的tableView .. –

+0

那麼你可以使用的電池,這是在'sender'參數可通過'UICollectionView'的'indexPathForCell'方法 –

+0

如何獲得'indexPath'你的意思是? –

相關問題