IPhone TableView не заполняет данные JSON - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть страница, которая содержит табличное представление - и текстовое поле и кнопку, которая отправляет почтовый индекс на страницу PHP и возвращает данные JSON.Я не могу заполнить табличное представление возвращенными данными.NSLog показывает, что данные возвращаются, но таблица остается пустой.Нет ошибокКод:

- (IBAction) searchzip: (id) sender
{
NSString *post = [NSString stringWithFormat:@"zip=%@", zipField.text];
NSString *hostString =     @"https://www.mysite.com/searchzip.php?";

// Append string and add percent escapes
hostString = [[hostString stringByAppendingString:post] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *hostURL = [NSURL URLWithString:hostString];
NSString *jsonString = [[NSString alloc] initWithContentsOfURL:hostURL];
self.zipArray = [jsonString JSONValue]; 
NSLog(@"%@", zipArray);
[jsonString release];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section    {
return [zipArray count];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath {
NSDictionary *infoDictionary = [self.zipArray objectAtIndex:indexPath.row];
static NSString *Prospects = @"agencyname";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Prospects];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:Prospects]   autorelease];
}

// setting the text
cell.text = [infoDictionary objectForKey:@"agencyname"];    
self.navigationItem.title = @"Zip Search";

// Set up the cell
return cell;

}

Заголовочный файл:

@interface SearchZipViewController : UITableViewController{
NSMutableArray *zipArray;
IBOutlet UITextField *zipField;
IBOutlet UIButton *searchButton;
}
@property (nonatomic, retain) NSMutableArray *zipArray;
@property (nonatomic, retain) UITextField *zipField;
@property (nonatomic, retain) UIButton *searchButton;
- (IBAction) searchzip: (id) sender;
@end

Ответы [ 3 ]

2 голосов
/ 28 декабря 2011

Я считаю, что основная проблема заключается в том, что вы пытаетесь создать составное представление (текстовое поле, кнопку и табличное представление) и используете UITableViewController в качестве контроллера.Здесь, на SO и в других местах, упоминалось, что это в основном запрет.Вместо этого попробуйте что-то вроде:

@interface SearchZipViewController : UIViewController<UITableViewDelegate, UITableViewDataSource> {
    IBOutlet UIButton* searchButton;
    IBOutlet UITextField* zipField;
    IBOutlet UITableView* tableView;
}

@end

, затем подключите UITableView в IB к tableView ивару в владельце файла - из ваших комментариев видно, что вы пытались связать табличное представлениеэлемент в составном представлении Владельцу файла, a UIViewController - не то, что вы хотите.

0 голосов
/ 28 декабря 2011

Вы должны использовать cell.textLabel.text, чтобы установить текст ячейки таблицы. Свойство text устарело.

Также попробуйте установить точку останова в этой строке, чтобы убедиться, что локальные переменные, которые у вас есть, действительно имеют значения, которые вы ожидаете (то есть правильные значения JSON). Может быть, у вас есть опечатка в одной из ключевых строк (например, корпус)?

0 голосов
/ 28 декабря 2011

В конце вашего поискового почтового метода вы должны добавить эту строку:

[tableView reloadData];

В противном случае ваш tableView не сможет узнать, что у вас есть новые данные для отображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...