Xcode上的两个数组和两个UITableview相同的viewcontroller

时间:2014-12-22 10:18:14

标签: ios objective-c iphone xcode uitableview

我在xcode中遇到了问题。我想要两个数组和两个tableview相同的视图控制器。我的tableviews标签1001和2002.我调用Web服务并成功创建我的数组。我运行它,只有table1(标签1001)显示值。 2002年零。我的代码是:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if (tableView.tag == 1001)
    {
        return 1;
    }

    else
    {
        return 1;
    }

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{ 

       if(tableView.tag==1001)
    {
        NSLog(@"self.Data count: %lu", (unsigned long)[menuData count]);
        return [menuData count];
    }

    else
    NSLog(@"self.İçkiler: %lu", (unsigned long)[icecekData count]);
    return [icecekData count];


}


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


    static NSString *CellIdentifier = @"Cell";
    int indicator = UITableViewCellAccessoryDisclosureIndicator;



    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }



NSString * cellValue;


if (tableView.tag==1001)
{

    veriler=[menuData objectAtIndex:[indexPath row]];
    NSLog(@"Name  : %@ ", veriler.menuadi);
    cellValue= veriler.menuadi;

}
if (tableView.tag==2002)

{

    veriler=[icecekData objectAtIndex:[indexPath row]];
    NSLog(@"Name  : %@ ", veriler.icecek);
    cellValue= veriler.icecek;

}




cell.textLabel.text=cellValue;
cell.selectionStyle=UITableViewCellSelectionStyleNone;
return cell;



}

我的代码有什么问题。请你帮帮我吧。 感谢。

4 个答案:

答案 0 :(得分:0)

numberOfRowsInSection的else语句中,请确保将其包含在{}中。只有NSLog有条件地运行,而return [icecekData count]始终无条件地运行 应该是这样的:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if(tableView.tag==1001)
    {
        NSLog(@"self.Data count: %lu", (unsigned long)[menuData count]);
        return [menuData count];
    }
    else
    {
        NSLog(@"self.İçkiler: %lu", (unsigned long)[icecekData count]);
        return [icecekData count];
    }
}

答案 1 :(得分:0)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     if(tableView.tag==1001)
     {
         NSLog(@"self.Data count: %lu", (unsigned long)[menuData count]);
         return [menuData count];
     }
     else
     {
         NSLog(@"self.İçkiler: %lu", (unsigned long)[icecekData count]);
         return [icecekData 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];
    }
    if (tableView.tag==1001)
    {
        veriler=[menuData objectAtIndex:[indexPath row]];
        NSLog(@"Name  : %@ ", veriler.menuadi);
        cellValue= veriler.menuadi;
    }
    if (tableView.tag==2002)
    {
        veriler=[icecekData objectAtIndex:[indexPath row]];
        NSLog(@"Name  : %@ ", veriler.icecek);
        cellValue= veriler.icecek;
    }

    cell.textLabel.text=cellValue;
    cell.selectionStyle=UITableViewCellSelectionStyleNone;
    return cell;
}

// Edited
 - (void)viewDidLoad 
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    menuData = [[NSMutableArray alloc] init];
    [menuData retain];

    icecekData = [[NSMutableArray alloc] init];
    [icecekData retain];
    [self callwebservice];

    [itablo reloadData];
    [mtablo reloadData];
 }
// Please check the Delegate and Datasource setting for both TableView

答案 2 :(得分:0)

我认为您需要检查基本的东西,例如,如果您已在Xib中为第二个表视图连接了正确的插座,还要检查委托和数据源方法是否已连接。如果您将其设置为2002 tableview,那么如果正确的话还可以检查标记值。

答案 3 :(得分:0)

我解决了问题。谢谢@Monikanta你是对的。我使用[self.itable reloadData]但不使用方法

- (void)viewDidLoad

。因为我被称为网络服务。我的代码现在是:

-(void) connectionDidFinishLoading:(NSURLConnection *) connection {


NSLog(@"DONE. Received Bytes: %d", [webData length]);
NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding: NSUTF8StringEncoding];




[theXML release];

if (xmlParser)
{
    [xmlParser release];
}
xmlParser = [[NSXMLParser alloc] initWithData: webData];
[xmlParser setDelegate: self];

[xmlParser parse];
[self.mtablo reloadData];
[self.itablo reloadData];
[connection release];
[webData release];
}

编辑前是:

-(void) connectionDidFinishLoading:(NSURLConnection *) connection {


NSLog(@"DONE. Received Bytes: %d", [webData length]);
NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding: NSUTF8StringEncoding];




[theXML release];

if (xmlParser)
{
    [xmlParser release];
}
xmlParser = [[NSXMLParser alloc] initWithData: webData];
[xmlParser setDelegate: self];

[xmlParser parse];
[self.mtablo reloadData]; // I ADD  [self.itablo reloadData];
[connection release];
[webData release];
}