Frage

In meiner Anwendung, ich bin mit einer kundenspezifischen angepassten Tabelle. Jede Zelle hat eine UIButton und UIImage. Wenn ein Ausbesserungs auf die Schaltfläche accurs, möchte ich die UIImagePickerController Methode aufrufen ein Bild aus der iphone-Bibliothek auswählen und in der Bildansicht angezeigt werden soll. Ich habe es geschrieben, aber eine Warnung bekommen ... ‚customCell‘ reagieren nicht animiert PresentModalViewController ... hier customCell ist die Unterklasse meiner Hauptklasse, myApp, auch den Namen der Spitze der benutzerdefinierten Zelle. Jeder kennt das Problem ???? Dank ...

Bearbeiten

- (IBAction)selectExistingPicture1 { 
    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary]) {
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self; 
        picker.allowsImageEditing = YES;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentModalViewController:picker animated:YES];
        [picker release];
    } 
    else { 
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error accessing photo library" message:@"Device does not support a photo library" delegate:nil cancelButtonTitle:@"Drat!" otherButtonTitles:nil]; 
        [alert show]; 
        [alert release]; 
    } 
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {    
    CGSize newSize = CGSizeMake(80, 80);
    UIGraphicsBeginImageContext( newSize );
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    imageView.image = newImage;

    [picker dismissModalViewControllerAnimated:YES]; //warning shown here   
}  

Dies ist die individuelle Zellklasse .. und die Viewcontroller Klasse hat ...

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

     if (cell == nil) {
         NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
         for (id currentObject in nib){
             if ([currentObject isKindOfClass:[CustomCell class]]){
                 cell = (CustomCell *)currentObject; break;
             }
         }
     }

     NSUInteger s= indexPath.section;
     //[cell setText:[NSString stringWithFormat:@"I am cell %d", indexPath.row]];

     NSUInteger r = indexPath.row;
      cell.imageView.image = nil;
     for (s;s==0;s++)
     for(r;r==0;r++)
     {       
          UIImage *img=imageView.image;
         cell.imageView.image = img;
         }
     return cell;
 } 
War es hilfreich?

Lösung

UITableViewCell reagiert nicht auf -presentModalViewController:animated:.

Sie könnten wahrscheinlich geben Sie Ihrem CustomCell einen Zeiger auf Ihre View-Controller, und dann -presentModelViewController:animated: auf dem View-Controller aufrufen.

Fügen Sie einen Instanz-Variable auf Ihre benutzerdefinierte Zellklasse:

@interface CustomCell : UITableViewCell {
    UIViewController *viewController;
}
@property (nonatomic, assign) UIViewController *viewController;
@end

In -tableView:cellForRowAtIndexPath:, nachdem Sie einen neuen CustomCell erstellen, setzen Sie die Eigenschaft:

if (cell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
    for (id currentObject in nib){
        if ([currentObject isKindOfClass:[CustomCell class]]){
            cell = (CustomCell *)currentObject;
            cell.viewController = self; // <-- add this
            break;
        }
    }
}

Dann in Ihrer CustomCell Klasse ersetzen

[self presentModalViewController:picker animated:YES];

mit

[self.viewController presentModalViewController:picker animated:YES];

Andere Tipps

Dies wird Ihre Frage nicht beantworten, aber wenn Sie eine UIButton in einer Zelle haben haben, sind Sie wahrscheinlich über Ihr UI-Design falsch gehen. Versuchen eine Art und Weise zu denken, die gesamte Zelle zu haben, um die Aktion durchzuführen, der, wenn nicht das, eine Offenlegung Gadget oder etwas verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top