2012-02-10 60 views
1

顯示JSON數據I使用以下代碼:iphone:在的UITableViewCell

- (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]; 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 

    }  
if (indexPath.row == 0) { 

      CGRect myImageRect = CGRectMake(120.0f, 5.0f, 70.0f, 55.0f); 
      UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect]; 
      [myImage setImage:[UIImage imageNamed:@"logo.png"]]; 
      [cell.contentView addSubview:myImage]; 
     } 
     else { 

      int arrayIndex = [indexPath row]-1 ; 
      mdict = [mmenuitems objectAtIndex:arrayIndex]; 
      [mdict retain]; 
      cell.textLabel.text =[mdict objectForKey:@"name"]; 

我得到正確JSON在mmenuitems解析的消息,並且用於indexPath.row = 0,以顯示一個標誌。
但問題是我沒有得到tableview中的最後一項。
此外,當我滾動tableview數據隨機重新加載,並重復相同。

回答

1

我可以鼓勵你需要加1到你的ro數WS方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return [mmenuitems count]+1//add 1 for the logo cell 
} 

所以你的行數將在徽標的mmenuitems陣列+ 1個單元格中的所有對象。

更好的方法將是您的徽標添加到表格視圖header view,而不是表視圖中的行,你可以做到這一點在你看來沒有負載表視圖後載入:

 CGRect myImageRect = CGRectMake(120.0f, 5.0f, 70.0f, 55.0f); 
     UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect]; 
     [myImage setImage:[UIImage imageNamed:@"logo.png"]]; 
     [self.tableView.tableHeaderView addSubview:myImage]; 

它會將您的徽標添加到第一個表格行頂部的視圖中,並且不會混合到您的表格行中。我相信它會解決你的重複問題。

祝你好運

+0

感謝您的回答。當我按照您所說的標識位置放置在tableview上方,但無法向上滾動時。可以使用tableview將其向上滾動。 – nithin 2012-02-10 05:55:19

+0

你能解釋一下你不能滾動的意思嗎? – shannoga 2012-02-10 06:40:57

+0

我的headerview被錨定在導航欄上。我希望它也能用tableview滾動起來 – nithin 2012-02-10 07:22:13

0

您可以嘗試爲單元格使用不同的標識符。由於該單元格正在重新使用,因此您的內容將被覆蓋。這不是好的方法,但它解決了這個問題。

1

您可以將#1添加到您的numberOfRowsInSection方法中。

+0

感謝它幫助顯示整個數據。但仍然存在隨機重新加載的問題。 – nithin 2012-02-10 04:08:04

+0

你可以發佈你的mmenuitems的NSLog嗎? – Jamie 2012-02-10 04:10:09

0

首先你需要重置您的每次避免舊數據

if (cell == nil) { 
    // cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 

} 
cell.textLabel.text = nil; //This clears any stale label 
for(UIImageView *view in cell.contentView.subviews) 
{ 
    [view removeFromSuperView]; // This clears any subview added 
} 

其次的,

你行的數量應該是

[mmenuitems count] + 1 

我相信,目前這只是[mmenuitems count]