【问题标题】:ios - naming and make action from each cellios - 从每个单元格命名并执行操作
【发布时间】:2014-05-16 15:19:04
【问题描述】:

所以我正在使用此代码...“MFSideMenuDemoStoryboard” https://github.com/mikefrederick/MFSideMenu/tree/master/Demos/MFSideMenuDemoStoryboard/MFSideMenuDemoStoryboard

我想为“SideMenuViewController.m”中的每个单元格命名,并让每个单元格在“DemoViewController.m”中显示一个特定的 UIView。有什么帮助吗?

感谢任何帮助,谢谢!

【问题讨论】:

  • 什么意思?我已经尝试了2天,但它对我不起作用!我试图让每个单元格成为一个按钮,然后使用该按钮来更改视图,但它没有工作,所以我明白我的方式错误,这就是我在这里寻求帮助的原因!
  • 好的。我的意思是您目前拥有的代码示例?所以我们可以看到可能出了什么问题。很难为您猜出答案。
  • 另外,您似乎正在尝试将此示例用于它不是为它设计的东西。这应该用于更改 UIViewControllers 不添加不同的 UIViews 到特定的 UIViewController
  • 话虽如此,重新调整用途应该不会太难。
  • 看我的回答......我想我明白你想做什么。

标签: ios uitableview uiview uiviewcontroller


【解决方案1】:

SideMenuController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    DemoViewController *demoController = [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
    demoController.title = [NSString stringWithFormat:@"Demo #%d-%d", indexPath.section, indexPath.row];

    UINavigationController *navigationController = self.menuContainerViewController.centerViewController;
    NSArray *controllers = [NSArray arrayWithObject:demoController];
    navigationController.viewControllers = controllers;
    [self.menuContainerViewController setMenuState:MFSideMenuStateClosed];

}

将此代码替换为:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   //EDIT #1
    UINavigationController *navigationController = self.menuContainerViewController.centerViewController;
    DemoViewController *currentCenterView = [[navigationController viewControllers] firstObject];
    [currentCenterView addAnotherView:indexPath.row]; //This is where you will tell your 'middle view' to load another UIView ... You can use the indexPath.row to determine which option was tapped and act accordingly.

    [self.menuContainerViewController setMenuState:MFSideMenuStateClosed];

}

您显然需要将方法 - (void) addAnotherView:(NSInteger ) row; 添加到您的 DemoViewController 或您所称的任何内容中。

Edit #1 这将引用当前加载的视图。这仅在您仅在导航控制器堆栈上使用 1 个视图控制器时才有效。否则抓取第一个对象将不起作用,您需要搜索正确的索引。

【讨论】:

  • You said " [demoController addAnotherView:indexPath.row]; //这是您将告诉您的“中间视图”加载另一个 UIView ...您可以使用 indexPath.row 来确定哪个选项被点击并采取相应的行动。“......我该怎么做你能帮我吗?
  • 您正在使用您链接到的项目吗?如果是这样,在 DemoViewController.h 添加: - (void) addAnotherView:(NSInteger ) row;
  • 然后在 .m 中添加: - (void) addAnotherView:(NSInteger ) row { //这是你添加视图的地方 }
  • 查看我的编辑。那是因为我删除了demoController对象的声明。
  • 现在我收到 2 个错误,提示选择器“viewControllers”没有已知的类方法。和“未知接收者‘navigationController’;你的意思是‘UINavigationController’吗?”
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多