[英]Add object to an NSArray from UITableViewCell
我创建了一个自定义UITableViewCell
,其中包含PFObject
属性和一个按钮。 我希望按钮在NSMutableArray
上添加此对象,然后将此Array传递给另一个UIViewController
。 问题是我无法在自定义UITableViewCell
实现prepareForSegue
方法,因此当我在restoCardConfirmationVC
显示数组时,总是得到一个空数组。
这是我的代码:
#import "boxTableViewCell.h"
#import "RestoCardConfirmationViewController.h"
#import "RestauCardViewController.h"
@implementation boxTableViewCell {
NSMutableArray *_pickerPlace;
RestauCardViewController *_restoCardVC;
RestoCardConfirmationViewController *_restoCardConfirmationVC;
}
- (void)awakeFromNib {
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return _pickerPlace.count;
}
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [_pickerPlace objectAtIndex:row];
}
- (IBAction)select:(id)sender {
NSLog(@"the select box is : %@",_box);
[_restoCardConfirmationVC.boxesCommande addObject:_box];
self.select.enabled = NO;
}
@end
#import <UIKit/UIKit.h>
#import <Parse/Parse.h>
@interface RestoCardConfirmationViewController : UIViewController
@property(nonatomic) PFObject *commande;
@property(nonatomic) NSMutableArray *boxesCommande;
- (IBAction)confirmer:(id)sender;
@end
您应该在使用数组之前对其进行初始化。 像这样
- (void)awakeFromNib {
// Initialization code
_restoCardConfirmationVC = [[RestoCardConfirmationViewController alloc] init];
_restoCardConfirmationVC.boxesCommande = [NSMutableArray array];
}
虽然这是一个不好的方法。 您应该在RestoCardConfirmationViewController初始化中初始化数组。
您尚未初始化要在其中添加对象的数组。 在awakeFromNib
或ViewDidLoad
分配它,然后在其中添加一个对象。
而且,我没有找到在TableViewCell的awakeFromNib中分配视图控制器的充分理由。 仅应在点按“按钮”时分配VC。
因此,代码应类似于:
- (IBAction)select:(id)sender {
_restoCardConfirmationVC = [[RestoCardConfirmationViewController alloc] init];
[_restoCardConfirmationVC view]; //This will call the ViewDidLoad in Advance
[_restoCardConfirmationVC.boxesCommande addObject:_box];
self.select.enabled = NO;
}
在RestoCardConfirmationViewController的ViewDidLoad中:
- (void)viewDidLoad {
[super viewDidLoad];
_boxesCommande = [NSMutableArray array];
//Other initialisation code
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.