Я пытаюсь обновлять UITableView
каждый раз, когда перемещаюсь по представлению, содержащему эту таблицу.
У меня есть ViewController
и пользовательский UITableViewController
, который удастся правильно настроить таблицу, когдаприложение запускается с использованием NSMutableArray
, содержащегося в контроллере.
Когда я перехожу на страницу, содержащую таблицу, ViewController
вызывает функцию, которая получает данные с сервера с помощью HTTP-запроса и разбораэто в NSMutableArray
.
Теперь вот моя проблема.Мне удается отправить этот массив на мой UITableViewController
, но когда я хочу обновить свой tableView, ничего не происходит.
Я пытался использовать [myTable reloadData]
, но он не вызывает numberOfRowsInSection или cellForRowAtIndexPath
функции.Я видел, что люди с той же проблемой решили ее, используя [self.myTable ReloadData]
, но я получаю ошибку:
доступ к неизвестному методу получения / установки
Я довольно новичок вtarget-C, и эта ошибка все еще немного загадочна для меня, поскольку я получаю ее немного случайно.
В любом случае, есть большая вероятность, что я напутал с объявлением UITableViewController
(гдея должен объявить это?) и со ссылками Interface Builder, так что это может быть ключом к поиску решения.
У кого-нибудь есть идея?
Большое спасибо!
РЕДАКТИРОВАТЬ: Вот мой класс контроллера таблицы просмотра:
#import "MyCell.h"
@class Mycell;
@interface MyTableController : UITableViewController {
IBOutlet MyCell * myCell;
IBOutlet UITableView * myTable;
NSMutableArray *data;
}
@property (nonatomic, retain) IBOutlet UITableView * myTable;
- (void) EditTable : (NSMutableArray*) param;
@end
А теперь .m:
@implementation MyTableController
@synthesize myTable;
- (void) viewDidLoad {
[super viewDidLoad];
myTable = [[UITableView alloc] init];
data = [[NSMutableArray alloc] init];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [data count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCell";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; >
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil];
for (id currentObject in topLevelObjects){
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (MyCell *) currentObject;
}
}
}
NSString *datastring = [listenom objectAtIndex:indexPath.row];
[cell setCell: datastring ];
return cell;
}
- (void) EditTable : (NSMutableArray*) param{
//This function is called by the ViewController when the user goes to the page containing the view
data = param; //The param array contains the data from the HTTP request
[self.tableView reloadData];
[self.myTable reloadData]; //I tried both, but only the first one actually calls the previous functions
}