PFQueryTableViewController的didSelectRowAtIndexPath方法
我正在使用Parser与iOS创build我的第一个应用程序。 现在我只是使用Parse对象的一个tableview,但是我不能点击一行并打开一个视图控制器来显示所选的对象细节。 这是我如何从Parse获取对象:
- (id)initWithCoder:(NSCoder *)aCoder { self = [super initWithCoder:aCoder]; if (self) { // Customize the table // The className to query on self.parseClassName = @"cadenas"; // The key of the PFObject to display in the label of the default cell style self.textKey = @"chain_name"; // Uncomment the following line to specify the key of a PFFile on the PFObject to display in the imageView of the default cell style // self.imageKey = @"image"; // Whether the built-in pull-to-refresh is enabled self.pullToRefreshEnabled = YES; // Whether the built-in pagination is enabled self.paginationEnabled = YES; // The number of objects to show per page self.objectsPerPage = 25; } return self; } - (PFQuery *)queryForTable { PFQuery *query = [PFQuery queryWithClassName:@"cadenas"]; if ([self.objects count] == 0) { query.cachePolicy = kPFCachePolicyCacheThenNetwork; } [query orderByAscending:@"createdAt"]; return query; }
这是我的cellForRowAtIndexPath方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } // Configure the cell to show todo item with a priority at the bottom cell.textLabel.text = [object objectForKey:@"chain_name"]; return cell; }
而这个didSelectRowAtIndexPath方法:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { Detalle_ChainViewController *detailViewController =[self.storyboard instantiateViewControllerWithIdentifier:@"detalle_chain"]; NSLog(@"CELL TAPPED"); [self.navigationController pushViewController:detailViewController animated:YES]; }
我一直在search没有成功如何让选定的行对象传递给详细视图控制器。
任何帮助是受欢迎的。
您可以使用数组来存储对象,并将其更新到cellForRowAtIndexPath中
例如:(我在这里使用了字典,因为查询结果的计数是未定义的; Operation
是PFObject
子类)
class HistoryViewController: PFQueryTableViewController { var operations: [Int: Operation] = [:] override init!(style: UITableViewStyle, className: String!) { super.init(style: style, className: className) } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) parseClassName = "Operation"; textKey = "title"; pullToRefreshEnabled = true; paginationEnabled = true; objectsPerPage = 25; } override func queryForTable() -> PFQuery! { var query = Operation.query() query.whereKey("wallet", equalTo: wallet) query.addDescendingOrder("date") return query } override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!, object: PFObject!) -> PFTableViewCell! { let operation = object as! Operation operations[indexPath.row] = operation var cell: PFTableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as! PFTableViewCell // set up your cell return cell } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { let row = tableView.indexPathForSelectedRow()!.row (segue.destinationViewController as! OperationInfoViewController).loadOperation(operations[row]!) } }