Rss 将数据加载到UITABBARC控制器内的TTTableViewController
我将此TTTableViewController作为UITabBarController的第一个视图。在加载带有RSS提要数据的表时,它似乎工作得很好,但是当我将它添加到UITabBarController时,列表中永远不会填充任何内容。我将数据输出到控制台,所有数据都被转储到那里,但列表无法填充。有人能解释我做错了什么吗?好的,伙计们,这是一个编码DOH!片刻之后,让我向您展示我的UITabBarController代码:Rss 将数据加载到UITABBARC控制器内的TTTableViewController,rss,uitabbarcontroller,three20,Rss,Uitabbarcontroller,Three20,我将此TTTableViewController作为UITabBarController的第一个视图。在加载带有RSS提要数据的表时,它似乎工作得很好,但是当我将它添加到UITabBarController时,列表中永远不会填充任何内容。我将数据输出到控制台,所有数据都被转储到那里,但列表无法填充。有人能解释我做错了什么吗?好的,伙计们,这是一个编码DOH!片刻之后,让我向您展示我的UITabBarController代码: #import "HeadlinesController.h" #im
#import "HeadlinesController.h"
#import "DDXML.h"
@implementation HeadlinesController
- (id)init
{
if(self = [super init]) {
self.title = @"Headlines";
self.tabBarItem.image = [UIImage imageNamed:@"166-newspaper.png"];
self.variableHeightRows = YES;
self.dataSource = nil;
[self requestAction];
}
return self;
}
- (void)requestAction
{
TTURLRequest *request = [TTURLRequest requestWithURL:@"http://some.rss" delegate:self];
request.response = [[[TTURLDataResponse alloc] init] autorelease];
request.httpMethod = @"GET";
[request send];
}
#pragma mark -
#pragma mark TTURLRequestDelegate
- (void) requestDidStartLoad:(TTURLRequest *)request
{
// do nothing for now
}
- (void) requestDidFinishLoad:(TTURLRequest *)request
{
TTURLDataResponse *response = (TTURLDataResponse *)request.response;
//NSLog([[NSString alloc] initWithData:response.data encoding:NSUTF8StringEncoding]);
//NSString *xmlStr = [[NSString alloc] initWithData:response.data encoding:NSUTF8StringEncoding];
DDXMLDocument *doc = [[DDXMLDocument alloc] initWithData:response.data options:0 error:nil];
NSArray *resultNodes = nil;
resultNodes = [doc nodesForXPath:@"//item[position() <= 10]" error:nil];
TTListDataSource *ds = [[TTListDataSource alloc] autorelease];
NSMutableArray *dsItems = [[[NSMutableArray alloc] init] autorelease];
for(DDXMLElement *resultElement in resultNodes) {
NSString *itemTitle = [[[resultElement nodesForXPath:@"title" error:nil] objectAtIndex:0] stringValue];
NSString *itemLink = [[[resultElement nodesForXPath:@"link" error:nil] objectAtIndex:0] stringValue];
NSString *itemDesc = [[[resultElement nodesForXPath:@"description" error:nil] objectAtIndex:0] stringValue];
NSString *itemPubDate = [[[resultElement nodesForXPath:@"pubDate" error:nil] objectAtIndex:0] stringValue];
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"EEE, dd MMMM yyyy HH:mm:ss Z"];
NSDate *pubDate = [df dateFromString:itemPubDate];
TTTableMessageItem *tMsgItem = [TTTableMessageItem itemWithTitle:itemTitle caption:@"" text:itemDesc timestamp:pubDate URL:itemLink];
[dsItems addObject:tMsgItem];
}
[ds initWithItems:dsItems];
self.dataSource = ds;
}
- (void)request:(TTURLRequest *)request didFailLoadWithError:(NSError *)error
{
NSLog(@"ERROR: %@", error);
}
@end
最初我在选项卡栏视图中创建选项卡栏视图,即在init方法中,我这样做:
#import "TodayController.h"
#import "HeadlinesController.h"
#import "GalleriesController.h"
@implementation TodayController
- (id)init
{
if(self = [super init]) {
self.title = @"Today";
HeadlinesController *headlines = [[HeadlinesController alloc] init];
GalleriesController *galleries = [[GalleriesController alloc] init];
[self setViewControllers:[NSArray arrayWithObjects:
headlines,
galleries,
nil]];
//[self.view addSubview:tabController.view];
}
return self;
}
- (void)dealloc
{
//[tabController release];
[super dealloc];
}
@end
并通过此实例添加子视图控制器。我们就说我下午脑子不好。我不知道为什么我认为在选项卡栏实例中需要另一个选项卡栏。至少这是一个很好的代码示例,适合初学者使用。谢谢,对于代码块修复,很抱歉没有意识到表单错误会重置间距。
UITabBarController *tabBar = [[[UITabBarController alloc] init] autorelease];