0

我的视图控制器中有一个表格视图,并且我有 customTableViewCell。我有在我的 customeview 单元格中生成运行时的动态按钮。单击该按钮时,我想将持有带有 customtableviewcell 的表格视图控制器的视图控制器推到另一个视图控制器,我该怎么做?在我的custometableviewcell.m文件中,我有这个按钮。

CommentButton = [[UIButton alloc]init];
        CommentButton.frame = CGRectMake(CommentLabel.frame.origin.x+CommentLabel.frame.size.width+5, 5, 110, 35);
        CommentButton.titleLabel.font = [UIFont systemFontOfSize:12];
        [CommentButton setTitle:@"Add Comment" forState:UIControlStateNormal];
        CommentButton.backgroundColor = [UIColor clearColor];
        [CommentButton addTarget:self action:@selector(GoToComment:) forControlEvents:UIControlEventTouchUpInside];

以下是我在文件中的 postnotification customtableviewcell.m,它将在评论按钮单击时调用

-(IBAction)GoToComment:(id)sender {

[[NSNotificationCenter defaultCenter] postNotificationName:@"GoToComment" object:nil];

}

以上是我已注册的按钮,NSNotification称为以下方法

[[NSNotificationCenter defaultCenter] addObserver:self
                                            selector:@selector(GotoComents)
                                                name:@"GoToComment" object:nil];

上面的行在我的 viewcontroll 的 viewdidload 中,其中我有带有那个 customtableviewcell 的 tableview。

并从 customtableview 单元格中发布上述通知,它将推送新的视图控制器

-(void)GotoComents
{  
    TableTextViewController *settingView=[[TableTextViewController alloc]initWithNibName:@"TableTextViewController" bundle:nil];
    [self.navigationController pushViewController:settingView animated:YES];




}

现在我刚刚使用 nsnotofication 中心完成了它,它只是从我的 customTableViewcell 调用并调用 viewcontroller 方法。

但这是正确的方法吗?如果不是,那么任何人都可以帮助我如何实现这一目标。?记得我有生成运行时的动态按钮。所以请任何人指导我吗?

4

6 回答 6

2

点击按钮事件

-(void)buttonAction:(UIButton*)sender
    {

    YourViewControllerVC *yvc=[YourViewControllerVC alloc] init];
    [self.yournavigatioonController pushViewController:yvc animated:YES];

    }
于 2013-08-06T06:07:22.150 回答
1

您可以将 TableViewController 子类声明为自定义单元格委托,然后在其中创建 GoToComment 方法,而不是

[CommentButton addTarget:self action:@selector(GoToComment:) forControlEvents:UIControlEventTouchUpInside];

[CommentButton addTarget:self.delegate action:@selector(GoToComment:) forControlEvents:UIControlEventTouchUpInside];
于 2013-08-06T06:06:01.367 回答
0

为动态生成的按钮添加目标操作:

[myButton addTarget:targetObject action:@selector(actionMethod) forControlEvents:UIControlEventTouchUpInside];

然后为 targetObject 实现 actionMethod ,每当触摸按钮时都会调用它。在此操作方法中,您需要以下代码:

UIViewController *viewController = [[UIViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
于 2013-08-06T06:08:43.283 回答
0

您没有正确描述您的问题..您可以这样做:

    LoginViewController * login_view = [[ LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    UINavigationController *Nav01 = [[UINavigationController alloc] initWithRootViewController:login_view];

    Nav01.navigationBar.hidden = YES;
    login_view.fromProfileView = FALSE;
    [self presentModalViewController:Nav01 animated:YES];
于 2013-08-06T06:52:02.107 回答
0

我想你需要的是

- (UIViewController *)viewController {
    for (UIView* next = [self superview]; next; next = next.superview) {
        UIResponder *nextResponder = [next nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)nextResponder;
        }
    }
    return nil;
}

使用上面的代码,您可以在自定义单元格中找到当前的视图控制器。

于 2018-05-28T17:16:12.007 回答
-1

你必须以这种方式添加你的按钮:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
           action:@selector(aMethod:)
 forControlEvents:UIControlEventTouchDown];

[view addSubview:button];

其中 aMethod 是 IBAction 返回方法。

于 2013-08-06T06:11:27.093 回答