Ios UITableView不显示内容

Ios UITableView不显示内容,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我试图在我的viewcontroller中填充UITableView(它是UITableView的代理) 下面的代码是我在网上找到的。我做了一些更改,因此不需要UITableViewController来使用它。但是,由于我更改了它,我无法弄清楚如何在单元格中打印文本。在更改代码以允许我的ViewcController子类成为UITableView的委托之前。谁能给我指一下正确的方向吗 我已经检查过了,XML正在正确解析。当代码到达startParsing方法中的if(marrXMLData.

我试图在我的viewcontroller中填充UITableView(它是UITableView的代理)

下面的代码是我在网上找到的。我做了一些更改,因此不需要UITableViewController来使用它。但是,由于我更改了它,我无法弄清楚如何在单元格中打印文本。在更改代码以允许我的ViewcController子类成为UITableView的委托之前。谁能给我指一下正确的方向吗

我已经检查过了,XML正在正确解析。当代码到达
startParsing
方法中的
if(marrXMLData.count!=0)
时,
marrXMLData
大于0(具体为8,即我的XML中正确的项目总数)

代码来自:

m在下面

DisplayTableViewController

@synthesize marrXMLData;
@synthesize mstrXMLString;
@synthesize mdictXMLPart;

- (void)viewDidLoad{
    [super viewDidLoad];
    [self startParsing];
}

- (void)startParsing{
    NSData *fileData = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"file.xml"]];
    NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithData:fileData];
    [xmlparser setDelegate:self];
    [xmlparser parse];
    if (marrXMLData.count != 0) {
        [self.myUITableView reloadData];
    }
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;{
    if([elementName isEqualToString:@"Content"])
        marrXMLData = [[NSMutableArray alloc] init];
    if([elementName isEqualToString:@"item"])
        mdictXMLPart = [[NSMutableDictionary alloc] init];
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;{
    if(!mstrXMLString)
        mstrXMLString = [[NSMutableString alloc] initWithString:string];
    else
        [mstrXMLString appendString:string];
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName     namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;{

if([elementName isEqualToString:@"title"] || [elementName isEqualToString:@"url"]){

        [mdictXMLPart setObject:mstrXMLString forKey:elementName];

    }
    if([elementName isEqualToString:@"item"])

        [marrXMLData addObject:mdictXMLPart];
        mstrXMLString = nil;

    }

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

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    (NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

    cell.textLabel.text = [[[marrXMLData objectAtIndex:indexPath.row] valueForKey:@"title"] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    cell.detailTextLabel.text = [[[marrXMLData objectAtIndex:indexPath.row] valueForKey:@"url"] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    return cell;
}

@end
编辑:

再使用一段时间后,将不会调用此方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

在示例代码中,它正在被调用,但我不确定在哪里。(对不起,我对iOS非常陌生)

听起来您的表视图的委托和/或数据源链接没有连接。如果在IB(Interface Builder)中设置表视图场景,则只需控制从表视图到视图控制器的拖动

你的问题太模糊,无法回答。“我不知道如何在标签上打印文字。”这是什么意思?什么文本?什么标签?你有正确的电池数量吗?您是在文本标签中获取内容而不是在详图文本标签中获取内容,还是在详图文本标签中获取内容而不是在文本标签中获取内容,或者两者都不获取内容?什么代码触发XML解析并填充XML数据数组?此代码假定
[xmlparser parse]
[self.myUITableView reloadData]
之前运行并完成,首先确保在解析完成后调用
self.myUITableView reloadData
,使用nslog或断点,然后确保
marrXMLData
数组中有对象。一个简单但错误的修复方法是将您的
[self.myUITableView reloadData]
移动到didEndElement的末尾
(void)parser:(NSXMLParser*)parser didStartElement
Hello@duncan我做了一些编辑以更好地解释。我试图在UITableView中填充单元格。标签将在cell@u.genmarrXMLData中确实有对象!我编辑了我的问题,以解释运行代码时看到的更多内容。@Airagale脚本中的单元格标识符设置为什么?运行时,
[marrXMLData count]
的值是多少?当您说control+拖到视图控制器上时,您的意思是在.h文件中为UITableView创建一个IBOutlet吗?否。如果您选择了表视图和正确的检查器(我忘记了它的名称,我不在Mac.Connections检查器旁?)然后,您将看到代理和数据源的一项。您需要在视图控制器的界面中添加一个条目,指示它符合UITableViewDataSource和UITableViewDelegate协议,然后从数据源和代理连接拖动到视图控制器上。我在IB中找到了您正在谈论的内容。我尝试单击并将数据源和代理拖动到视图控制器,但它无法链接。相反,我在viewDidLoad函数[myUITableView setDelegate:self]中以编程方式链接了它;和[myUITableView setDataSource:self];我很高兴你明白了。请注意,可以使用容器视图和嵌入序列在视图控制器中嵌入UITableViewController。然后你就可以得到一个表视图控制器的优点,它不需要填满屏幕。这就是我所做的——这就是为什么我会遇到这样的问题。我使用的示例使用了UITableViewController,我想要一个内部带有UITableView的ViewController。该示例未设置数据源或委托。