Domanda

Hoping someone had to solve related issues .. this is driving me nuts :/

My UITableViewController implements a custom delegate method:
.h

@protocol folderDelegate
@required
- (void)folderViewDidSelectPlan:(NSString*)planId;
@end

@interface FolderViewController : UITableViewController
@property (nonatomic, assign) id delegate;
@end

.m

@implementation FolderViewController
@synthesize delegate;

...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    NSDictionary *row = [self->resultsPlan objectAtIndex:indexPath.row];
    if ([delegate respondsToSelector:@selector(folderViewDidSelectPlan:)]) {
        [delegate folderViewDidSelectPlan:[row objectForKey:@"id"]];
    }
}

In my iPad's MainView I'm displaying this UITableView via UIPopoverController:

@interface ProjectViewController ()<folderDelegate>

...

- (void) selectPlan:(UIBarButtonItem*)sender
{
    if([self->popoverSelectPlanController isPopoverVisible]){
        [self->popoverSelectPlanController dismissPopoverAnimated:YES];
    }

    FolderViewController *folder = [[FolderViewController alloc]     initWithStyle:UITableViewStyleGrouped withInstallation:self->_installationId withProjectId:self->_projectId withParentFolderId:@""];
    folder.delegate = self;

    UINavigationController *folderNavView = [[UINavigationController alloc] initWithRootViewController:folder];

    self->popoverSelectPlanController = [[UIPopoverController alloc] initWithContentViewController:folderNavView];
    [self->popoverSelectPlanController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

And handling the delegate via:

- (void) folderViewDidSelectPlan:(NSString *)planId
{
    NSLog(@"called");
}

However, folderViewDidSelectPlan never get's called - I'm really stuck here, hope anyone has an idea how to solve this.

Thanks a lot!

È stato utile?

Soluzione

Try to change declaration of the property to:

@property (assign) id<folderDelegate> delegate;

And also use self.delegate instead of in your UITableViewController.m file every time instead of just delegate. If you don't have to support iOS4 or less remove synthesise from UITableViewController.m.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top