![](/img/trans.png)
[英]How to pass data from oneviewcontroller to anotherviewcontroller while using swrevealviewcontroller?
[英]How to Send Image Array by index From OneViewController to AnotherViewController in iOS?
我是iOS开发的新手。 我制作了一个包含JSON数据的应用程序,并将该数据解析为Array,并且此Array也包含另一个数组,它也通过索引进行解析,如下所示
if (responsedata.length > 0)
{
NSError* error;
self.json = [NSJSONSerialization JSONObjectWithData:responsedata options:kNilOptions error:&error];
if ([[_json objectForKey:@"data"] isKindOfClass:[NSArray class]])
{
NSArray *arr = (NSArray *)[_json objectForKey:@"data"];
[self.imageArray addObjectsFromArray:arr];
[self.storeViewTable reloadData];
}
self.storeViewTable.hidden=FALSE;
}
for(NSDictionary *dict in self.imageArray )
{
[self.imagesa addObject:@{@"demopage":[dict valueForKey:@"demopage"]}];
}
NSLog(@"Array Count %@",self.imagesa);
NSLog(@"Another array Count %d",[self.imageArray count]);
}
它是给我一个我想要的数组,现在当我按下TableviewCell按钮时,按索引逐个显示此self.imagesa数组,然后添加一个标签TableViewCell按钮,而Write是如下方法
preview.tag=indexPath.row;
我将标签设置为“预览按钮”,并且为Action方法,例如
-(IBAction)showPreviewSeondSection:(id)sender
{
UIButton *button = (UIButton *)sender;
NSInteger row = button.tag;
NSLog(@"Tag of button %d",row);
if (row == 0)
{
PreviewViewController *preview=[[PreviewViewController alloc]initWithNibName:@"PreviewViewController" bundle:nil];
preview.imagesa=self.imagesa[1][@"demopage"];
[self presentViewController:preview animated:YES completion:nil];
NSLog(@"Preview array %@",preview.imagesa);
}
if (row == 1)
{
PreviewViewController *preview=[[PreviewViewController alloc]initWithNibName:@"PreviewViewController" bundle:nil];
preview.imagesa=self.imagesa[2][@"demopage"];
[self presentViewController:preview animated:YES completion:nil];
NSLog(@"Preview array %@",preview.imagesa);
}
}
这是showPreviewSeondSection是我按下预览按钮的操作方法在这里,我只有两个单元格,然后工作得很好,然后将self.imagesa数组发送到PreviewViewController视图控制器,但是在以后的应用程序中,我的TableViewCell增加了,那么我如何设置For循环或if循环要将数据发送到我的PreviewView Controller,请为此提供解决方案。 当我将代码编辑为myButton按下事件时
-(IBAction)showPreviewSeondSection:(id)sender
{
UIButton *button = (UIButton *)sender;
NSInteger row = button.tag;
NSLog(@"Tag of button %d",row);
for (row = 1; row<[self.imagesa count]; row++)
{
PreviewViewController *preview=[[PreviewViewController alloc]initWithNibName:@"PreviewViewController" bundle:nil];
preview.imagesa=self.imagesa[row][@"demopage"];
[self presentViewController:preview animated:YES completion:nil];
NSLog(@"Preview array %@",preview.imagesa);
}
}
那么它仅显示“所有索引的第一索引数据”按钮。
正如我在您的代码中注意到的那样...当row = 0时,您正在索引1处发送数组;当row = 1时,您正在索引2处发送数组,因此可以像这样动态地进行操作,
您不需要传递硬编码索引,您需要传递row + 1索引
-(IBAction)showPreviewSeondSection:(id)sender
{
UIButton *button = (UIButton *)sender;
NSInteger row = button.tag;
NSLog(@"Tag of button %d",row);
PreviewViewController *preview=[[PreviewViewController alloc]initWithNibName:@"PreviewViewController" bundle:nil];
preview.imagesa=self.imagesa[row+1][@"demopage"];
[self presentViewController:preview animated:YES completion:nil];
}
您无需编写if条件,在单元格按钮动作时我们将获得索引。
您可以使用以下代码发送相同的数据,如果要发送下一个对象,则可以将行增加1。
NSInteger row = (button.tag+1);
如果“行”数大于“ self.imagesa”数组中的对象数,则应用程序将崩溃,并抛出“ NSArray Outofbounds ...”异常。
-(IBAction)showPreviewSeondSection:(id)sender
{
UIButton *button = (UIButton *)sender;
NSInteger row = button.tag;
NSLog(@"Tag of button %d",row);
// remove the commented part only
// if (row == 0)
// {
PreviewViewController *preview=[[PreviewViewController alloc]initWithNibName:@"PreviewViewController" bundle:nil];
preview.imagesa=self.imagesa[row][@"demopage"];
[self presentViewController:preview animated:YES completion:nil];
NSLog(@"Preview array %@",preview.imagesa);
//}
//if (row == 1)
//{
// PreviewViewController *preview=[[PreviewViewController alloc]initWithNibName:@"PreviewViewController" bundle:nil];
// preview.imagesa=self.imagesa[2][@"demopage"];
// [self presentViewController:preview animated:YES completion:nil];
// NSLog(@"Preview array %@",preview.imagesa);
//}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.