我想提供一些JSON數據到我的iPhone應用程序,數據進來罰款,因爲我有NSLog告訴我這樣。UITableView與JSON的幫助
我遇到的問題是試圖讓結果顯示在UITableView中。我有一個導航控制器在標籤欄控制器下,導航控制器包含一個表視圖控制器,該控制器加載另一個NIB文件,其中一個表視圖連接到一個類,該類是委託和數據源委託。
我還需要將結果歸類爲多個部分 - 這些是
- 英格蘭
- 蘇格蘭
- 威爾士
- N.Ireland
得到什麼JSON的想法字符串我正在使用see this one。
正如你所看到的JSON不適合這些部分,但我還沒有實現這一點,所以我需要事先知道,所以我不必稍後修改很多代碼。
好的 - 我正在使用Stig JSON解析器。
這是我的ListVenuesView.h(連接到表視圖)
#import <UIKit/UIKit.h>
#import "SBJson.h"
@interface ListVenuesView : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
IBOutlet UITableView *venueList;
NSMutableDictionary *jsonArray;
}
@property (nonatomic, retain) IBOutlet UITableView *venueList;
@property (nonatomic, retain) NSMutableDictionary *jsonArray;
@end
jsonArray用於存儲JSON數據和最終的正確數組。
這裏是我的ListVenuesView.m(問題關鍵領域)
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Table View Loaded");
// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
// This is where we load the JSON data
NSURL *jsonURL = [NSURL URLWithString:@"http://www.thebigfishexperience.org.uk/sources/ajax/venue-json.php?location=peterborough"];
NSString *jsonData = [[NSString alloc] initWithContentsOfURL:jsonURL];
NSLog(@"%@", jsonData);
// Convert jsonData to array
self.jsonArray = [jsonData JSONValue];
NSLog(@"%@", jsonArray);
NSLog(@"count is: %i", [self.jsonArray count]);
// Release NSString and NSURL
[jsonURL release];
[jsonData release];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [self.jsonArray 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];
}
NSMutableDictionary *dict = [self.jsonArray objectAtIndex: indexPath.row];
cell.textLabel.font = [UIFont fontWithName:@"Arial" size:15.0];
cell.textLabel.text = [dict objectForKey:@"venueName"];
cell.detailTextLabel.text = [dict objectForKey:@"venueCordDist"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// Configure the cell...
return cell;
而且我怎麼可以使用數據在細胞中去導航控制器的另一子視圖,給了我一個返回按鈕和僅顯示已被點擊的特定單元格的JSON字符串中的信息。
我覺得這跟它有關係嗎?不確定,因爲這是我建立的第一個應用程序!所以可能期待更多的援助 - 哈! ;)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
/*
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"Nib name" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
*/
}
非常感謝這個Gomathi! –