繁体   English   中英

从UITableViewCell向NSArray添加对象

[英]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

RestaCardConfirmation.h

#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初始化中初始化数组。

您尚未初始化要在其中添加对象的数组。 awakeFromNibViewDidLoad分配它,然后在其中添加一个对象。

而且,我没有找到在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM