2014-05-06 46 views
3

我有一個UITableView填充數據(文本&圖像)。當用戶點擊特定的行項目時,它將繼續到一個detailViewController,它將所選行項目的文本和圖像填充到下一個視圖控制器中。傳遞單元格數據(即cell.textlabel.text和cell.imageView.image)到另一個視圖控制器

我正在使用prepareForSegue而不是didSelectRowAtIndexPath。

titleForRow:indexPath.row in:indexPath.section和imageForRow:...方法將填充每個行項目的標題(cell.textLabel.text)和圖像(cell.imageView.image)。我沒有使用一個數據模型,因爲這僅僅是一個模板上detailViewController(UNFDetailLoginTableViewController)中顯示

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

if ([segue.identifier isEqualToString:@"addLoginToDetailLoginTVC"]) 
{ 
    UINavigationController *navController = (UINavigationController *)segue.destinationViewController; 

    UNFDetailLoginTableViewController *targetVC = (UNFDetailLoginTableViewController *)navController.topViewController; 

    NSIndexPath *indexPath = [self.addLoginTableView indexPathForCell:sender]; 


    targetVC.loginNameTextField.text = [self titleForRow:indexPath.row in:indexPath.section]; 
    targetVC.detailLoginImage.image = [self imageForRow:indexPath.row in:indexPath.section]; 

    NSLog (@"%@", [self titleForRow:indexPath.row in:indexPath.section]); 
    } 

}

在拍打特定行,但它Segue公司的detailLoginTableViewController但數據不填充。但是,NSLog記錄應該傳遞給detailLoginTableViewController的正確數據。請幫忙。謝謝。

回答

1

如果目的viewController的屬性是IBOutlets,那麼因爲它們在destionation視圖加載之前未設置,所以需要將數據傳遞給intermediate屬性,然後在您的targetVC的viewDidLoad方法中設置您的網點。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

if ([segue.identifier isEqualToString:@"addLoginToDetailLoginTVC"]) 
{ 
    UINavigationController *navController = (UINavigationController *)segue.destinationViewController; 

    UNFDetailLoginTableViewController *targetVC = (UNFDetailLoginTableViewController *)navController.topViewController; 

    NSIndexPath *indexPath = [self.addLoginTableView indexPathForCell:sender]; 


    targetVC.text = [self titleForRow:indexPath.row in:indexPath.section]; 
    targetVC.image = [self imageForRow:indexPath.row in:indexPath.section]; 

    NSLog (@"%@", [self titleForRow:indexPath.row in:indexPath.section]); 
} 

在你UNFDetailLoginTableViewController.h:

@property (strong, nonatomic) NSString *text; 
@property (strong, nonatomic) UIImage *image; 

在你UNFDetailLoginTableViewController.m,在viewDidLoad中:

self.loginNameTextField.text = self.text; 
self.detailLoginImage.image = self.image; 
+0

嗨馬丁。是的,他們是IBOutlets。您能否建議您如何將數據傳遞給中間財產?是的,我還沒有在viewDidLoad中爲targetVC聲明它們,因爲我不知道如何連接它們。 – mikebruno

+0

當然,請嘗試添加的代碼。如果這樣做,你也可以將你的網點轉移到m。 –

+0

謝謝馬丁。但它仍然沒有傳遞數據。我試着記錄NSLog(@「%@」,targetVC.text),它是空的。 – mikebruno

相關問題