我有一个自定义cell
,其中包含很少的视图和按钮。从其中一个按钮开始,我执行Segue
并且我需要该单元格编号,但不知道如何获取它。请帮忙。
看看我的细胞看起来如何:
从红色圆圈按钮调用prepareForSegue
。
以下是代码:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return _array.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NewsFeedCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewsFeedCell" forIndexPath:indexPath];
if (cell) {
cell.item = _array[indexPath.section];
}
return cell;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"AudioComment"])
{
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
NSLog(@"%ld",(long)indexPath.section); //printing 0 everytime :(
}
}
请提供有关如何获取indexPath
的任何帮助/建议?
感谢。
答案 0 :(得分:2)
您可以使用
UITableViewCell *cell = (UITableViewCell *)[[sender superview]superview];
NSLog(@"%ld",(long)[_generalTableView indexPathForCell:cell].row);
答案 1 :(得分:1)
为索引添加变量,并在选择单元格时进行设置。访问perpareForSegue中的变量,将其传递给destinationVC并将其传递给它。
答案 2 :(得分:1)
使用以下代码。它可能对你有帮助。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MainPhotoCell *cell = (MainPhotoCell *)[tableView dequeueReusableCellWithIdentifier:@"CellIdentifierMedia" forIndexPath:indexPath];
if (!cell)
{
cell = [[MainPhotoCell alloc] init];
}
cell.usrCommentBtn.tag = indexPath.row;
[cell.usrCommentBtn addTarget:self action:@selector(onCommentClick:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
- (void)onCommentClick:(id)sender
{
if ([GlobalManager checkUserLoginStatus:self])
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:([sender tag]) inSection:0];
[self performSegueWithIdentifier:@"showComments" sender:indexPath];
}
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString: @"showComments"])
{
NSIndexPath * path = (NSIndexPath *)sender;
//do the your required code here.
}
}
答案 3 :(得分:1)
您必须在按钮上设置标记。在您的情况下,将按钮标记设置为CellforRowAtIndexPath中的indexPath.section。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NewsFeedCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewsFeedCell" forIndexPath:indexPath];
if (cell) {
cell.item = _array[indexPath.section];
}
cell.button1.tag = indexPath.section;
return cell;
}
在PrepareForSegue中,从按钮标记中获取索引。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"AudioComment"])
{
NSInteger index = ((UIButton *) sender).tag;
NSLog(@" %ld ",index);
}
}