在prepareforsegue中传递标签的价值

时间:2014-08-01 21:20:06

标签: ios objective-c xcode segue viewcontroller

使用prepareforsegue方法,我需要将每个标签的值传递给下一个viewcontroller类。我知道我应该将每个单元格中的值作为单个对象传递给下一个viewcontroller类,但是我不确定最好的方法。

2 个答案:

答案 0 :(得分:0)

在下一个控制器中,您需要在.h文件中设置一个可以设置的变量。然后在prepareForSeque中,您可以执行以下操作:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"detailSegue"])
    {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

        NextViewController *dest = [segue destinationViewController];

        NSArray* labels = [[NSArray alloc] initWithObjects: [cell viewWithTag:1], [cell viewWithTag:2], [cell viewWithTag:3], [cell viewWithTag:4], nil];

        dest.labels = labels;
    }
}

然后在您的目标控制器的initWithFrame中,您可以迭代每个标签并致电:text

for (UILabel* label in self.labels)
{
    NSLog(@"%@", [label text]);
}

答案 1 :(得分:0)

不要传递任何东西。在prepareforSegue中,在DestinationVC中创建源视图控制器的引用(下面的示例)

    [(DestinationVC *)segue.destinationViewController sourceVC] = self;

然后在DestinationVC中,参考源视图控制器的tableview属性,运行一个循环来引用所有单元格(例如下面的例子)

    for (NSUInteger i = 0; i < [self.tableView numberOfRowsInSection:0]; i++) {
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathWithIndex:i]];

   //Refer to all subviews and see if they are UIlabel

   }
相关问题