使用prepareforsegue方法,我需要将每个标签的值传递给下一个viewcontroller类。我知道我应该将每个单元格中的值作为单个对象传递给下一个viewcontroller类,但是我不确定最好的方法。
答案 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
}