从自定义UITableViewCell类内部调用pushViewController

时间:2010-06-19 14:26:26

标签: iphone objective-c

我有一个自定义UITableViewCell,它是导航控制器的一部分。 单元格有一个按钮,当按下该按钮时,我想将视图推到我的导航控制器上。

我可以通过在cellForRowAtIndexPath方法中使用选择器来轻松完成此任务。

[cell.fooButton addTarget:self action:@selector(pushBarViewController:) forControlEvents:UIControlEventTouchUpInside];

然后在pushBarViewController方法内部我可以执行推送操作

[self.navigationController pushViewController:barViewController animated:YES];

这很好用,但现在我需要将自定义UITableViewCell中包含的一些信息传递到我的barViewController中。 我的动作:@selector不允许我传入任何参数,所以我不能使用这种方法。

我已经在自定义UITableViewCell内按下按钮创建了一个动作,但由于没有导航控制器,我无法从此处推动视图。

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:0)

这个怎么样:

-(void)pushBarViewController{
    YourBarViewController *barViewController = [[YourBarViewController alloc] init];
    barViewController.myString = @"this string will be passed to the new view";
    [self.navigationController pushViewController:barViewController animated:YES];
    [barViewController release];
}

并在头文件YourBarViewController.h中定义

NSString *myString;

@property(nonatomic, retain) NSString *myString;

并在实现文件中合成它。

答案 1 :(得分:0)

BarViewController类中创建一些实例变量,并在推动控制器之前设置它们。

答案 2 :(得分:0)

我设法搞清楚了。我保留了这个:

[cell.fooButton addTarget:self action:@selector(pushBarViewController:) forControlEvents:UIControlEventTouchUpInside];

然后在pushBarViewController中我这样做了:

UIButton* button = (UIButton *)sender;
CustomCell *cell = (CustomCell *)[button superview];
NSUInteger row = [customTableView indexPathForCell:cell].row;
Foo *foo = [fooArray objectAtIndex:row];

现在我可以访问foo了,我可以分配我的barViewController并设置

barViewController.foo = foo

然后按常规推动。

[self.navigationController pushViewController:barViewController animated:YES];    

答案 3 :(得分:-1)

按照已经给出的例子。