У меня есть приложение, которое контролируется tableview/pickerview, и для каждой таблицы я заполнял текстовые объекты.Невозможно импортировать NSMutableArray в другой класс и сохранить объекты tablecell
Теперь, когда клиент выбирает одну строку и переходит к следующей таблице, я хочу сохранить этот объект в NSMutableArray, который выделен/инициализирован в одном классе, и я хочу, чтобы этот файл класса был открыт, поэтому объекты могут быть добавлены из разных классов tableview в NSMutableArray.
Первые 2 файла: код MotorTVController работает хорошо, когда щелкнул ячейку tableview, объект добавлен в _myTrimArray, но я хочу сохранить следующий объект tablecell в том же _myTrimArray, я пытаюсь импортировать TrimArray. h (2 файла, последний в коде здесь) с той же функцией сохранения в MotorTVController, чтобы использовать savearraycode, но он не работает.
Поэтому я хочу, чтобы TrimArray.h/TrimArray.h мог сохранять все классы с табличными представлениями и значениями таблицы tableviewcell в один NSMutableArray.
Я пробовал с этим почти неделю, надеюсь, кто-то может дать мне решение, я новичок в этом, я знаю, что это не может быть так сложно решить, но я просто не знаю как?
//--------- MotorTVController.h
#import "YearPickerTVControllerPolaris.h"
#import "MotorTVController.h"
#import "motorTVCell.h"
#import "brandsTVCell.h"
#import "TrimArray.h"
@interface MotorTVController : YearPickerTVControllerPolaris
@property (nonatomic, strong) NSArray *motorLabelArray;
@property (nonatomic, strong) NSMutableArray *myTrimArray;
@end
//--------- MotorTVController.m file:
#import "MotorTVController.h"
#import "motorTVCell.h"
#import "YearPickerTVControllerPolaris.h"
#import "BackButton.h"
#import "TrimArray.h"
@interface MotorTVController()
@end
@implementation MotorTVController
@synthesize myTrimArray = _myTrimArray;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
// Getter
- (NSMutableArray *)myTrimArray
{
if (_myTrimArray == nil) {
_myTrimArray = [[NSMutableArray alloc] init];
}
return _myTrimArray;
}
- (void)viewDidLoad
{
UIImage *arrow = [UIImage imageNamed:@"backbutton"];
UIButton *arrowButton = [[UIButton alloc] initWithFrame:CGRectMake(-12, 0, 36, 36)];
[arrowButton setBackgroundImage:arrow forState:UIControlStateNormal];
[arrowButton addTarget:self action:@selector(back)
forControlEvents:UIControlEventTouchUpInside];
UIView* buttonView = [[UIView alloc] initWithFrame:CGRectMake(-12, 0, 36, 36)];
[buttonView addSubview:arrowButton];
UIBarButtonItem * backbutton = [[UIBarButtonItem alloc]
initWithCustomView:buttonView];
[self.navigationItem setLeftBarButtonItem:backbutton];
[super viewDidLoad];
_motorLabelArray = @[@"Original EH12 (4hk)",
@"Honda GX160 (5.5hk)",
@"Subaru EX17 (6hk)",
@"Honda GX200 (6.5hk)",
@"Briggs LO206 (9hk)",
@"Briggs WF206 (11HK)"];
//NSLog(@"%@", _myTrimArray);
}
-(void)back
{
[self.navigationController popViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _motorLabelArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"motorTVCell";
motorTVCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier
forIndexPath:indexPath];
// Configure the cell...
[cell setTintColor:[UIColor blackColor]];
[cell setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton];
[cell setAccessoryType:UITableViewCellAccessoryDetailButton];
NSInteger row = [indexPath row];
cell.motorCellLabel.text = _motorLabelArray[row];
return cell;
}
// Which row is selected
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
(NSIndexPath *)indexPath
{
NSInteger rowNumber = indexPath.row;
if (rowNumber == 0)
{
[_myTrimArray addObject:[_motorLabelArray objectAtIndex:0]];
NSLog(@"You choosed %@", [_myTrimArray objectAtIndex:0]);
}
else if (rowNumber == 1)
{
[_myTrimArray addObject:[_motorLabelArray objectAtIndex:1]];
NSLog(@"You choosed %@", [_myTrimArray objectAtIndex:1]);
}
else if (rowNumber == 2)
{
[_myTrimArray addObject:[_motorLabelArray objectAtIndex:2]];
NSLog(@"You choosed %@", [_myTrimArray objectAtIndex:2]);
}
else if (rowNumber == 3)
{
[_myTrimArray addObject:[_motorLabelArray objectAtIndex:3]];
NSLog(@"You choosed %@", [_myTrimArray objectAtIndex:3]);
}
else if (rowNumber == 4)
{
[_myTrimArray addObject:[_motorLabelArray objectAtIndex:4]];
NSLog(@"You choosed %@", [_myTrimArray objectAtIndex:4]);
}
else if (rowNumber == 5)
{
[_myTrimArray addObject:[_motorLabelArray objectAtIndex:5]];
NSLog(@"You choosed %@", [_myTrimArray objectAtIndex:5]);
}
}
@end
//-------------- TrimArray.m
#import "TrimArray.h"
#import "MotorTVController.h"
@interface TrimArray()
@end
@implementation TrimArray
@synthesize myTrimArray = _myTrimArray;
// Getter
- (NSMutableArray *)myTrimArray
{
if (_myTrimArray == nil) {
_myTrimArray = [[NSMutableArray alloc] initWithCapacity:10];
}
return _myTrimArray;
}
@end
//----------------- TrimArray.h:
#import "MotorTVController.h"
@interface TrimArray : NSMutableArray
@property (nonatomic, strong) NSMutableArray *myTrimArray;
@end
Большое спасибо за ответ, мне удалось заставить функцию сохранения работать. NSString * saveString = selectedRowInSpeedPickerView; NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject: saveString forKey: @ "saveString"]; [синхронизация по умолчанию]; NSLog (@ "% @", selectedRowInSpeedPickerView); но у меня все еще есть проблемы с выполнением функции загрузки: NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSString * loadString = [defaults objectForKey: selectedRowInSpeedPickerView]; [selectedRowInSpeedPickerView loadString]; <--- Неправильно – Johan
Нет проблем. что вы имеете в виду не правильно? Вы должны были использовать ключ «saveString», чтобы получить объект. попробуйте этот NSString * loadString = [defaults objectForKey: @ "saveString"], ваш комментарий запутан, что вы пытаетесь сделать. что делает этот код? [selectedRowInSpeedPickerView loadString]; – Ezimet
Я хочу загрузить выбранное строковое значениеRowInSpeedPickerView и показать его NSlog, который я сохранил с помощью NSString * saveString = selectedRowInSpeedPickerView; NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject: saveString forKey: @ "saveString"]; [синхронизация по умолчанию]; – Johan