Я уже получал помощь отсюда, и благодаря этой помощи я получил ее частично.
Я создал NSMutableArray в файле реализации контроллера представления с именем BookmarksViewController.m.Массив правильно настроен и заполняет UITableView, также содержащийся в том же файле реализации.
Моя первоначальная проблема заключалась в передаче объектов в этот массив из отдельного контроллера представления путем выполнения IBAction для командной кнопки.Когда я передаю строку (addObject) в массив, я также помещаю BookmarksViewController в стек навигации.Когда View Controller загружается в стек навигации, четко переданная строкаОднако всякий раз, когда я перемещаюсь слишком далеко назад через стек навигации, нажимая кнопку «Назад», я возвращаюсь туда, где только что добавил объект, и он полностью исчезает.
Я также использую панель вкладок, на которой есть кнопкаBookmarksViewController.m и если вы нажмете, что новая строка нигде не будет видно.Что я думаю, так это то, что по какой-то причине новая строка не сохраняется после того, как она вышла за пределы навигационной группы, но я не могу понять, как она может, казалось бы, добавить массив в одну перспективу, а не в другую.
Вот соответствующий код:
BookmarksViewController.h
#import <UIKit/UIKit.h>
#import "DissertationAppDelegate.h"
@interface BookmarksViewController : UITableViewController {
NSMutableArray *bookmarksArray;
DissertationAppDelegate *dissertationAppDelegate;
}
@property (nonatomic, retain) NSMutableArray *bookmarksArray;
@property (nonatomic, retain) DissertationAppDelegate *dissertationAppDelegate;
@end
BookmarksViewController.m
#import "BookmarksViewController.h"
@implementation BookmarksViewController
@synthesize bookmarksArray;
#pragma mark -
#pragma mark View lifecycle
- (void)viewDidLoad {
bookmarksArray = [[NSMutableArray alloc]init];
[super viewDidLoad];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [bookmarksArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
cell.textLabel.text = [bookmarksArray objectAtIndex:indexPath.row];
return cell;
}
- (void)dealloc {
[bookmarksArray release];
[super dealloc];
}
Ch01GettingStarted.h
#import <UIKit/UIKit.h>
#import "BookmarksViewController.h"
@interface Ch01GettingStarted : UIViewController {
IBOutlet UIScrollView *ScrollView;
IBOutlet BookmarksViewController *bookmarksViewController;
}
-(IBAction) pushChap01Bookmark:(id)sender;
@property (nonatomic, retain) BookmarksViewController *bookmarksViewController;
@end
Ch01GettingStarted.m
#import "Ch01GettingStarted.h"
#import "BookmarksViewController.h"
#import "DissertationAppDelegate.h"
@implementation Ch01GettingStarted
@synthesize bookmarksViewController;
-(IBAction) pushChap01Bookmark:(id)sender{
[self.navigationController pushViewController:bookmarksViewController animated:YES];
bookmarksViewController.title = @"Bookmarks";
[bookmarksViewController.bookmarksArray addObject:@"NewString"];
NSLog(@"ADD ENTRY");
[bookmarksViewController.tableView reloadData];
NSLog(@"RELOAD TABLE");
}
- (void)dealloc {
[bookmarksViewController release];
[ScrollView release];
[super dealloc];
}
Итак, похоже, что он добавляет объект "NewString" в bookmarksArray в BookmarksViewController.Но если возможно, я хочу, чтобы он оставался там все время.
Спасибо.Карл