在 UITableView 中传递数据 beetwen 视图控制器
Posted
技术标签:
【中文标题】在 UITableView 中传递数据 beetwen 视图控制器【英文标题】:Passe data beetwen view controller in UITableView 【发布时间】:2015-05-06 10:03:28 【问题描述】:当用户从UITableView
中选择一个单元格时,我尝试将带有当前ViewController
的PFObject
传递给另一个ViewController
,这是我的代码:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *identifier = @"boxCell";
NSInteger row = [indexPath row];
boxTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if(cell == nil)
cell = [[boxTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
PFObject *boxe = [PFObject objectWithClassName:@"Boxe"];
boxe = [self.arrayBox objectAtIndex:row];
PFQuery *query = [PFQuery queryWithClassName:@"Boxe"];
[query whereKey:@"objectId" equalTo:boxe.objectId];
[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error)
if(object)
// I instanciate the PFObject
box = object;
cell.nomBoxe.text = object[@"contenu"];
cell.qteBoxe.text = [NSString stringWithFormat:@"%@ boxes disponbiles",object[@"quantite"]];
cell.prixBoxe.text = [NSString stringWithFormat:@"%@€",object[@"prix"]];
cell.descriptionBoxe.text = object[@"description"];
else
NSLog(@"Erreur lors de chargement, erreur : %@",error.description);
];
return cell;
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
[self performSegueWithIdentifier:@"segueToBoxDetail" sender:self];
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([[segue identifier] isEqualToString:@"segueToBoxDetail"])
boxDetailViewController *boxDetailVC = [segue destinationViewController];
boxDetailVC.box = box;
我声明了 PFObject:
@implementation RestauCardViewController
PFObject *box;
在另一个 ViewController 中,我有一个对象框的属性:
@property(nonatomic) PFObject *box;
我收到了这个错误:
由于未捕获的异常而终止应用 'NSInvalidArgumentException',原因:'-[UIViewController setBox:]: 无法识别的选择器发送到实例 0x12aad9100'
请帮忙
【问题讨论】:
您遇到的错误是什么... 我收到此错误:由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'-[UIViewController setBox:]: unrecognized selector sent to instance 0x12aad9100' 不确定,但可能您的 box 属性未分配或初始化 你能显示来自boxDetailViewController
的代码
@VivekMolkar #import "boxDetailViewController.h" @interface boxDetailViewController () @property(nonatomic) PFObject *box; @结束
【参考方案1】:
您在错误的位置写入属性。目前您正在类扩展中编写它。类扩展仅用于对该类保密数据。
尝试在 .h 文件中写入相同的属性。
.h 文件中声明的属性可供其他类访问。所以其他类可以访问它的访问器方法并设置它的值。
请告诉我。
【讨论】:
我在 .h 文件中声明了该属性,但它不起作用 ohhh... 请检查您的故事板中是否有任何名为“setBox”的选择器。但它不在您的代码中。请检查 我检查了,但有任何名为“setBox”的选择器【参考方案2】:在您的prepareForSegue:
中,将您的声明替换为这一行。
boxDetailViewController *boxDetailVC = (boxDetailViewController*)[segue destinationViewController];
编辑 请移步
property(nonatomic) PFObject *box;
到您的 .h 文件的行
【讨论】:
它不起作用,但是当我删除这一行时它起作用了:boxDetailVC.box = box; 它肯定会起作用,因为那是引发错误的行。您发布的错误意味着box
的情况下没有这样的属性。
如果你输入 boxDetailVC.box= nil 会发生什么?崩溃了?【参考方案3】:
我也遇到了同样的错误。解决了所以想在这里分享一下。
我有一个UIViewController
类,它与UITableViewController
的segue 连接。
实际上,我正在将 segue 与 UINavigationController
连接起来。
将 segue 连接更改为UITableViewController
解决了问题。
【讨论】:
以上是关于在 UITableView 中传递数据 beetwen 视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
将 managedobject 从 uitableview 传递到文本字段以在核心数据模型中进行编辑