Ios UITableView中的问题
我有一个Ios UITableView中的问题,ios,xml,uitableview,Ios,Xml,Uitableview,我有一个UITableView,它使用NSMutableArray来解析xml文件 问题:数据已添加到数组中,但在UITableView中不可见 子列表.h @interface SubList:UIViewController <UITableViewDelegate, UITableViewDataSource> { IBOutlet UITableView *List1; NSXMLParser *xmlparser; NSURLConnection *
UITableView
,它使用NSMutableArray
来解析xml文件
问题:数据已添加到数组中,但在UITableView
中不可见
子列表.h
@interface SubList:UIViewController <UITableViewDelegate, UITableViewDataSource>
{
IBOutlet UITableView *List1;
NSXMLParser *xmlparser;
NSURLConnection *conn;
NSMutableData *webdata;
NSString *FolderID;
NSMutableArray *info;
NSMutableArray *SubFolderData;
}
@property(nonatomic,retain) NSMutableArray *info;
@property(nonatomic,retain) NSMutableArray *SubFolderData;
@property (nonatomic,retain)NSString *FolderID;
@property(nonatomic,weak)IBOutlet UITableView *List1;
@property (nonatomic,retain) NSString *theXML;
您未输入代理,因此尚未设置这些代理,请使用
[List1 setDelegate:self];
[List1 setDataSource:self];
在视图中加载
- 在界面生成器中选择表视图
- 选择连接检查器
- 连接数据源并将其委托给文件所有者
您的表视图连接应如下图所示
Add还检查在调用表视图委托之前是否添加了数组。嗨,RANA,我们不知道您是如何进行解析的,因为您没有发布任何解析器方法。但根据你的代码,我得到了一些
此[parserObjForData1 UserXMLParser1:webdata]的返回类型;我说的对吗
如果我猜对了,试试这个
SubListParser*parserObjForData1=[[SubListParser alloc]init]
子文件夹数据=[[NSMutableArray alloc]initWithArray:[parserObjForData1 UserXMLParser1:webdata]]
而不是
SubListParser *parserObjForData1=[[SubListParser alloc]init];
SubFolderData=[[[NSMutableArray alloc]init];
SubFolderData=[parserObjForData1 UserXMLParser1:webdata];
我希望它能对您有所帮助。这是sublistparser.m文件
#import "SubListParser.h"
#import "DocumentManagementAppDelegate.h"
@implementation SubListParser
@synthesize mParserArray,ID,URL,SubjectType,Name;
static int count = 1;
-(NSMutableArray *)UserXMLParser1:(NSData *)WebDataRecieved1{
NSXMLParser *xmlparser1=[[NSXMLParser alloc]initWithData:WebDataRecieved1];
[xmlparser1 setDelegate:self];
BOOL success=[xmlparser1 parse];
NSLog(@"%i",success);
return listset1;
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
NSLog(@"NSXMLParser ERROR: %@ - %@", [parseError localizedDescription], [parseError localizedFailureReason]);
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
currentElementValue =[elementName copy];
if([elementName isEqualToString:@"FileFolderDetails"]){
item=[[NSMutableDictionary alloc]init];
Name=[[NSMutableString alloc]init];
SubjectType=[[NSMutableString alloc]init];
URL=[[NSMutableString alloc]init];
// NSLog(@"%@",Name);
}
//if ([elementName isEqualToString:@"FileFolderDetails"]) {
// NSLog(@"Inside FolderName");
// SUBLIST=[[SubListParser alloc]init];
// SUBLIST=[attributeDict objectForKey:@"Name"];
//}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
//NSLog(@"%@",string);
if(count){
listset1=[[NSMutableArray alloc]initWithCapacity:20];
count=0;
Urlarray = [[NSMutableArray alloc]initWithCapacity:20];
}
if ([currentElementValue isEqualToString:@"Name"]) {
[Name appendString:string];
[listset1 addObject:[NSString stringWithFormat:@"%@",Name]];
// NSLog(@"%@",listset1);
}
if ([currentElementValue isEqualToString:@"URL"]) {
[URL appendString:string];
[Urlarray addObject:[NSString stringWithFormat:@"%@",URL]];
NSLog(@"Url Array :%@",Urlarray);
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;
{
if([elementName isEqualToString:@"FileFolderDetails"]){
[item setObject:Name forKey:@"Name"];
[item setObject:SubjectType forKey:@"Type"];
[item setObject:URL forKey:@"URL"];
[users addObject:item];
}
}
@end
1.检查您的代理是否已设置。2.如果它们被调用.in.h,您说过要用conform to delegate编译这个类。但是您需要通过拖放或[tv setDelegate:self]etcin viewDidLoad方法设置在所有tableview委托方法中编写一个nslog,并检查它是否打印出来。发布一些相关代码。i、 e.XML解析代码,您正在填充数据源
数组。我以前做过,但它不起作用,我又做了一次,但它仍然不起作用。@RANA:您是否已钩住列表1以更正tableView。并使用@
来推荐我,这样我就可以得到通知。我没有名声来标记你:我在我的xib文件中有相同的连接在NumberOfRowsin处放置一个断点,记录[SubFolderData count]/2,在此处发布日志消息……嗨,拉娜,如果你仔细观察上述代码,你可能会发现问题,请参阅下面的代码-(void)解析器:(NSXMLParser*)解析器查找字符:(NSString*)字符串{//NSLog(@“%@”,string);if(count){listset1=[[NSMutableArray alloc]initWithCapacity:20];count=0;Urlarray=[[NSMutableArray alloc]initWithCapacity:20];}if([currentElementValue IsequalString:@“Name”]){[Name appendString];[listset1 addObject:[NSString stringWithFormat:@“%@”,Name]];//NSLog(@“%@”,listset1);}如果你看到Find characters方法,你在里面初始化listset1数组,很明显,数组会不断变清晰,所以即使你在数组中添加了任何东西,它也不会被添加。正因为如此,你不能在tableview中获取数据。现在为了避免这种情况,你必须在UserXMLPa中初始化listset1数组rser1方法不在foundcharacters方法中。请提前感谢。
SubListParser *parserObjForData1=[[SubListParser alloc]init];
SubFolderData=[[[NSMutableArray alloc]init];
SubFolderData=[parserObjForData1 UserXMLParser1:webdata];
#import "SubListParser.h"
#import "DocumentManagementAppDelegate.h"
@implementation SubListParser
@synthesize mParserArray,ID,URL,SubjectType,Name;
static int count = 1;
-(NSMutableArray *)UserXMLParser1:(NSData *)WebDataRecieved1{
NSXMLParser *xmlparser1=[[NSXMLParser alloc]initWithData:WebDataRecieved1];
[xmlparser1 setDelegate:self];
BOOL success=[xmlparser1 parse];
NSLog(@"%i",success);
return listset1;
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
NSLog(@"NSXMLParser ERROR: %@ - %@", [parseError localizedDescription], [parseError localizedFailureReason]);
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
currentElementValue =[elementName copy];
if([elementName isEqualToString:@"FileFolderDetails"]){
item=[[NSMutableDictionary alloc]init];
Name=[[NSMutableString alloc]init];
SubjectType=[[NSMutableString alloc]init];
URL=[[NSMutableString alloc]init];
// NSLog(@"%@",Name);
}
//if ([elementName isEqualToString:@"FileFolderDetails"]) {
// NSLog(@"Inside FolderName");
// SUBLIST=[[SubListParser alloc]init];
// SUBLIST=[attributeDict objectForKey:@"Name"];
//}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
//NSLog(@"%@",string);
if(count){
listset1=[[NSMutableArray alloc]initWithCapacity:20];
count=0;
Urlarray = [[NSMutableArray alloc]initWithCapacity:20];
}
if ([currentElementValue isEqualToString:@"Name"]) {
[Name appendString:string];
[listset1 addObject:[NSString stringWithFormat:@"%@",Name]];
// NSLog(@"%@",listset1);
}
if ([currentElementValue isEqualToString:@"URL"]) {
[URL appendString:string];
[Urlarray addObject:[NSString stringWithFormat:@"%@",URL]];
NSLog(@"Url Array :%@",Urlarray);
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;
{
if([elementName isEqualToString:@"FileFolderDetails"]){
[item setObject:Name forKey:@"Name"];
[item setObject:SubjectType forKey:@"Type"];
[item setObject:URL forKey:@"URL"];
[users addObject:item];
}
}
@end