2011-07-26 74 views
0

IAM開發一個application.In我放置的ImageView在每一個tableview中的細胞像如何在tableview中爲每個單元格放置圖像?

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

      static NSString *CellIdentifier = @"Cell"; 
      UITableViewCell *cell = [tableView 
        dequeueReusableCellWithIdentifier:CellIdentifier]; 

    itemimageview=[[UIImageView alloc]initWithFrame:CGRectMake(5, 8, 75, 70)]; 
    itemimageview.image=[UIImage imageNamed:@"thumb_mdpi.png"]; 
    itemimageview.userInteractionEnabled = YES; 
    [cell.contentView addSubview:itemimageview]; 
    return cell; 
} 

而當u點擊任一行,我們從我們的iPhone camera.For我寫下面的代碼在didSelectROw方法圖像。

UIImagePickerController *imagePicker = [[[UIImagePickerController alloc] init] 
                    autorelease]; 
imagePicker.sourceType=UIImagePickerControllerSourceTypeCamera; 
//imagePicker.allowsImageEditing = NO; 
imagePicker.delegate = self; 
[self presentModalViewController:imagePicker animated:YES]; 

後我使用像

- (void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

    NSLog(@"image selected"); 
    itemimageview.image =image; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

的委託的UIImagePickerController方法,但我的問題是選擇圖像後,該圖像將出現在最後一個單元格only.If U選擇第一行,並採取圖像那麼該圖像將出現在最後一行。所以請告訴我在我的代碼中爲每行獲取圖像所做的更改。

+0

您通過在代碼上添加斷點來檢查簡單。或者你使用開關盒和寫代碼,因爲當點擊第一行然後這個圖像顯示和第二行選擇然後顯示這個圖像。我想你得到任何解決方案。 – ram

回答

0

可以通過以下步驟實現這一點。 2.一旦您從相機獲取圖像,將其存儲在UIImage中。 3.現在您知道要更新的行並且您有圖像。在didFinishPickingMediaWithInfo委託方法的末尾調用UITableView的reloadData方法。 4. reloadData方法將隨後調用cellForRowAtIndexPath方法。在具有像這樣的條件:

if(indexPath.row==clickedRow){ 
    //Create the imageView here and then assign the image obtained from the camera to it. 
    imageView.image=cameraImage; 
    [cell.contentView addSubView:imageView]; 

} 其中clickedRow是保持在didSelectRowAtIndexPath方法方法用戶點擊的行數的整數變量。

希望這會有所幫助。

+0

對不起4壞的格式:「EXC_BAD_ACCESS」。如何解決這一個 – booleanBoy

+0

我用烏爾code.But在時的圖像分配給選定的行狀程序接收到的信號我得到了錯誤的這一個 –

+0

檢查是否釋放的ImageView對象twice.Releasing對象兩次可能會導致它這樣那樣崩潰。 – booleanBoy

0

的問題是,你itemimageview設置爲最近的單元格中的tableview從委託方法中,每個細胞被繪製itemimageview將包含最後一個圖像的實現代碼如下提請時間內搶下圖像視圖。

爲了解決它,你將不得不確保更新實際點擊的單元格的圖像視圖。我認爲最簡單的方法是使用Apple的默認單元格imageview和cell.image。或者你可以創建一個UITableViewCell的子類來跟蹤和繪製UIImageView。然後,您更改所選單元格中的圖像。

無論採用哪種方式,您都需要跟蹤在該課程中選擇哪個單元格。一種方法可能是將UITableViewCell selectedCell;置於.h中。然後在您的圖像委託中使用didSelect方法中的selectedCell = [self cellForRowAtIndexPath:indexPath];,然後使用selectedCell.image = image

對不起,如果這很難遵循,這是一個簡單的答案,適度複雜的問題。有很多方法可以解決這個問題。 1。首先,當用戶點擊的單元,存儲在一個整數變量行號(indexPath.row):

+0

那麼如何處理代碼 –

相關問題