iOS: добавить новую ячейку в табличное представление из другого представления - PullRequest
0 голосов
/ 03 ноября 2011

Мне было интересно, как лучше добавить новую ячейку в табличное представление в iOS.Допустим, у меня есть контроллер первого вида и контроллер второго вида.На первом контроллере просмотра у меня уже есть табличное представление с некоторыми данными, у меня также есть панель навигации с кнопкой добавления вверху.Нажатие на кнопку добавления представит новое представление, а затем я хочу передать данные из этого второго контроллера просмотра в первый просмотр контроллера и заполнить его моим табличным представлением.

Спасибо, Сэм

Ответы [ 3 ]

1 голос
/ 03 ноября 2011

Ваш secondViewController должен создать протокол делегирования. Ваш firstViewController должен быть назначен в качестве его делегата.

Как только secondViewController сохраняет данные, он вызывает метод, который ваш firstViewController должен реализовать

Хороший пример здесь: Как мне создать делегатов в Objective-C?

Для начала: secondViewController.h

@protocol secondViewControllerDelegate;

@interface secondViewController : UIViewController{
    id<secondViewControllerDelegate> __unsafe_unretained delegate;
}
@property (nonatomic, unsafe_unretained) id<secondViewControllerDelegate> delegate;
@end

@protocol secondViewControllerDelegate <NSObject>
- (void)dataSaved;
@end
0 голосов
/ 03 ноября 2011

Вы должны создать свои массивы в делегате приложения, а затем вызвать их и изменить их так, как вы хотите.

MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];

Когда у вас есть эта строка, вы можете соединиться между двумя классами и вызвать любые методы делегата, например:

[appDelegate populateMyArray];

вы не добавляете «новые ячейки», как вы это описали, вы используете те же ячейки и наполняете их различными данными.

0 голосов
/ 03 ноября 2011

Вы можете добавить новый класс с источником данных tableView. Инициируйте его с необходимыми данными (с обоих контроллеров View. используйте делегат для их взаимодействия) и после вызова вызова данных anu [tableView setDataSource:]:

//  DataSourceAtoZ.h
#import <Foundation/Foundation.h>
#import "MallsViewController.h"

@interface DataSourceCategory : NSObject <UITableViewDataSource> {
     NSMutableArray *data;
    UITableView *tableView;
}
@property (nonatomic, retain) NSMutableArray *data;

- (id)initWithData:(NSMutableArray *)d;

@end

затем в любом месте вашего кода скомпонуйте данные, которые вы хотите видеть в tableView, и установите dataSource:

NSMutableArray *dt = [[NSMutableArray alloc] init];
                for (int i = 0; i < [categories count]; i++) {
                    NSMutableArray *names = [[NSMutableArray alloc] init];
                    [names addObject:[[categories objectAtIndex:i] objectAtIndex:0]];
                    for (int j = 1; j < [[categories objectAtIndex:i] count]; j++) {
                        NSRange match = [[[categories objectAtIndex:i] objectAtIndex:j] rangeOfString:[params objectAtIndex:0]];
                        if (match.length != 0) {
                            [names addObject:[[categories objectAtIndex:i] objectAtIndex:j]];
                        }
                    }
                    [dt addObject:names];
                    [names release];
                }
                dsCategory = [[DataSourceCategory alloc] init];
                dsCategory = [dsCategory initWithData:dt];
                [dt release];
...