我有一个名为Cell Button的UIButton,它位于我的.h文件中
@interface CellButton : UIButton
@property (nonatomic,retain) CellButton *property;
在这个单元格中,我有两个相同类的按钮,然后我想设置btn1.property = 0;
和btn2.property = 1;
我在index的单元格中设置它。
然后我按下按钮时调用它:
[cell.Btn1 addTarget:self action:@selector(BtnClicked:) forControlEvents:UIControlEventTouchUpInside];
[cell.Btn2 addTarget:self action:@selector(BtnClicked:) forControlEvents:UIControlEventTouchUpInside];
以下是方法:
-(void)BtnClicked:(UIButton*)sender{
DiningHallTableViewController *dtvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DiningHallTableViewController"];
[self.navigationController pushViewController:dtvc animated:YES];
//depending on what button is tapped I want to send the number of the button pressed
}
如何发送号码?
修改
这是在我的cellForRowAtIndexPath
中在我的方法BtnClicked中我有
NSIndexPath *myIP = [NSIndexPath indexPathForRow:sender.tag inSection:0];
TwoMealsTableViewCell *cell = (TwoMealsTableViewCell*)[self.tableView cellForRowAtIndexPath:myIP];
答案 0 :(得分:1)
-(void)tableView:(UITableView *)table cellForRowAtIndexPath(IndexPath *):indexPath
{
// Assuming one section, if not then just take section number into account when getting cell
// You should be doing this part already
cell = self.contentArray[indexPath.row];
// Set tags on the buttons
cell.btn1 = [[CellButton alloc] init];
cell.btn2 = [[CellButton alloc] init];
cell.btn1.property = 0;
cell.btn2.property = 1;
[cell.btn1 addTarget:self action:@selector(BtnClicked:)forControlEvents:UIControlEventTouchUpInside];
[cell.btn2 addTarget:self action:@selector(BtnClicked:) forControlEvents:UIControlEventTouchUpInside];
// do anything else you need to do with the cells
return cell
}
-(void)BtnClicked:(UIButton *)sender{
DiningHallTableViewController *dtvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DiningHallTableViewController"];
[self.navigationController pushViewController:dtvc animated:YES];
//depending on what button is tapped I want to send the number of the button pressed
if ([sender isKindOfClass[CellButton class]]) {
property = ((CellButton *)sender).property;
}
// Now do whatever you need to do with the number
}
我还应该补充一点,你应该通过故事板segue进行导航,假设你正在为iOS 5+开发,而不是创建一个新的VC并将其推入堆栈。有很多关于使用storyboard segues的教程such as this one。
第三次编辑
从截图中可以清楚地看到您的问题出现在代码中:
@interface CellButton : UIButton
@property (nonatomic,retain) CellButton *property;
当您确实希望它是一个整数时,您将属性类型设置为CellButton。将上面的行更改为
@interface CellButton : UIButton
@property (nonatomic) NSInteger property;
您进行导航的方式与当前的最佳做法不符。虽然如果你不使用故事板(我不明白为什么你不会),我想你的解决方案是有效的。
答案 1 :(得分:0)
您获得该特定错误的原因是这一行:
@property (nonatomic,retain) CellButton *property;
您已将property
声明为CellButton
类型(CellButton
类内部,这是自我引用的,如果有效,我会感到惊讶)。
当您在property
中设置cellForRowAtIndexPath
时,您将其设置为原始类型0
的{{1}}或1
,而不是类型int
CellButton
- 因此错误。
要解决错误,请按照rfj001说&更改你的@property声明。
@property (nonatomic, retain) NSInteger property;
另外,请考虑使用ARC。没有必要弄乱/保留计数&手动记忆mgt了。