【问题标题】:delegate method not working on SWRevealViewController委托方法在 SWRevealViewController 上不起作用
【发布时间】:2014-01-07 21:09:15
【问题描述】:

我想刷新我在幻灯片菜单上的主视图确实选择了方法

我已经使用 SWRevealViewController 来加载我的幻灯片菜单并且它工作正常,但我不明白如何将委托分配给幻灯片菜单控制器并使用它?

这里是the link john lusch 的很棒的图书馆

滑动菜单控制器.h

@protocol SlideViewControllerDelegate
@required
-(void)menuViewControllerDidFinishWithCategoryId:(NSInteger)categoryId;
@end

 @interface SlideViewController : 

UIViewController<UITableViewDataSource,UITableViewDelegate>
{
    __weak id<SlideViewControllerDelegate> slideDelegate;
}

@property (nonatomic, weak) id <SlideViewControllerDelegate> slideDelegate;
@end

滑动菜单控制器.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.slideDelegate menuViewControllerDidFinishWithCategoryId:indexPath.row];
}

viewController.h

@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,SlideViewControllerDelegate>

viewController.m

在我看来确实加载方法

SlideViewController *slideView = [[SlideViewController alloc]init];
slideView.slideDelegate = self;

- (void)menuViewControllerDidFinishWithCategoryId:(NSInteger)categoryId
{
    self.categId = [catIdArray objectAtIndex:categoryId];
    NSLog(@"cat id %@",categId);
    [self getQuestions];
    [self.feedTableView reloadData];
}

//上面的日志永远不会执行 所以我认为将委托分配给 swreveal 视图控制器滑动菜单可能是我错了

【问题讨论】:

  • 您是否尝试在滑动菜单控制器中放置断点(在调用委托之前)?委托对正确的实例有效吗?
  • 我不明白你的担心???
  • 在您的控制器中,您有方法“- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath”。在那里你调用“[self.slideDelegate menuViewControllerDidFinishWithCategoryId:indexPath.row];”。在调用此方法之前,放置一个断点,以便您可以检查委托的值以了解它是否为 nil
  • 是的,你是对的,在那个电话之前,代表是零。我现在该怎么办?
  • 这方面有什么进展吗?

标签: ios iphone objective-c delegates slide


【解决方案1】:

也许你应该通过

来初始化SlideViewController
- (id)initWithRearViewController:(UIViewController *)rearViewController frontViewController:(UIViewController *)frontViewController;

上面写着README.md

【讨论】:

  • 我想刷新我在幻灯片菜单上的主视图确实选择了具有类别 ID 的方法。看看我的代码就知道我在这里尝试什么
【解决方案2】:

删除那些行:

{
    __weak id<SlideViewControllerDelegate> slideDelegate;
}

您的财产:

@property (nonatomic, weak) id <SlideViewControllerDelegate> slideDelegate;

够了。

【讨论】:

    【解决方案3】:

    得到它来设置一个代表到一个显示控制器这样做

    [(SlideViewController *)self.revealViewController.rearViewController setSlideDelegate:self];

    【讨论】:

    • 在你设置了你的 slideDelegate 之后,我在我的 viewdidload 方法中做了这个。
    • 抱歉,我没听懂您的意思...查看是否加载了 slideMenu 视图控制器或视图控制器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多