我想在Storyboard中使用segue(ShowADVDetail)将数据从TableViewController单元格传递给DetailViewContoller(UITableViewController)。
我有一个包含已解析RSS源的NSMutableArray'故事'。
我正在使用以下的prepareForSegue,它传递一个单元格的'title'值:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ShowADVDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
NSString *theTitle = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];
[[segue destinationViewController] setDetailItem:theTitle];
}
}
使用以下行我可以传递特定单元格的'title'值。
NSString *theTitle = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];
我也可以像这样访问'Description'值和'link'值:
NSString *theDescription = [[stories objectAtIndex: storyIndex] objectForKey: @"description"];
NSString *theLink = [[stories objectAtIndex: storyIndex] objectForKey: @"link"];
但是如何在我的segue中传递所有3个值?
到目前为止,我的didSelectRowAtIndexPath看起来像这样:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:NO]
[self performSegueWithIdentifier:@"ShowADVDetail" sender:self];
}
希望这有意义..
由于
答案 0 :(得分:5)
我想我正确理解你的问题。您可以通过在头文件(detailviewcontroller)中为要传递的属性创建属性来实现此目的。
所以你的detailViewController标题看起来像是:
@interface DetailListViewController : UIViewController
@property (strong, nonatomic) NSString *storyName;
@property (strong, nonatomic) NSString *storyDescription;
...
@end
然后在故事板中,您可以控制 - 将segue从tableview拖动到detailViewController。
在tableviewcontroller中导入detailViewController.h文件并添加如下代码:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSIndexPath *indexPath = self.tableView.indexPathForSelectedRow;
[segue.destinationViewController setStoryName:###however you get name###;
[segue.destinationViewController setStoryDescription:###however you get desc###;
}
在此代码中,您可以添加“If segue.identifier ...”
的检查