문제

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!

도움이 되었습니까?

해결책

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top