我有一个自定义UITableViewCell,它是导航控制器的一部分。 单元格有一个按钮,当按下该按钮时,我想将视图推到我的导航控制器上。
我可以通过在cellForRowAtIndexPath方法中使用选择器来轻松完成此任务。
[cell.fooButton addTarget:self action:@selector(pushBarViewController:) forControlEvents:UIControlEventTouchUpInside];
然后在pushBarViewController方法内部我可以执行推送操作
[self.navigationController pushViewController:barViewController animated:YES];
这很好用,但现在我需要将自定义UITableViewCell中包含的一些信息传递到我的barViewController中。 我的动作:@selector不允许我传入任何参数,所以我不能使用这种方法。
我已经在自定义UITableViewCell内按下按钮创建了一个动作,但由于没有导航控制器,我无法从此处推动视图。
有人可以帮忙吗?
答案 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)
按照已经给出的例子。