UITableView,单击行时如何处理?

时间:2014-08-04 17:58:38

标签: ios objective-c uitableview

我似乎无法找到如何展示另一个' UIViewController'单击一行时查看。因此,当单击该行时,它将转到下一个视图并显示有关行的更多信息。

我想我需要使用像- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath委托这样的东西。那么我的第二个问题是如何将该行中的数据(如标题)传递给下一个视图控制器?

由于

4 个答案:

答案 0 :(得分:1)

  CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
        NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

        NSString *title = cell.textLabel.text;
像@rmaddy说的那样,如果你做一些研究它会更好,这是非常基础的,我会建议你:

http://www.raywenderlich.com/

精彩教程的网站,他们真的有你需要的一切。

答案 1 :(得分:1)

这是一个假设的例子:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    MyCustomViewController *vc = [[MyCustomViewController alloc]initWithTitle:selectedCell.textLabel.text];
    // Assuming your UITableViewDelegate has a navigationController
    [self.navigationController presentViewController:vc animated:YES completion:nil];
}

答案 2 :(得分:1)

如果您使用的是故事板:

·H

@interface YourTableViewController : UIViewController 
{

// you just need int selectedRow inside of @interface
int selectedRow;
}

的.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // this method is going to give you NSIndexPath *indexPath
    selectedRow = indexPath;
    [self performSegueWithIdentifier:@"nameOfYourSegue" sender:self];
}

您可能已经拥有此方法,如果是这种情况,请在其中添加代码。当segue即将执行时调用此方法。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"nameOfYourSegue"]){

    //Pass data from one controller to the next
    [[segue destinationViewController] setRowIndex:selectedRow];
}

}

selectedRow将具有选择哪一行的索引,其中0为第一行。

在您的下一个视图控制器类中:

·H

- (void)setRowIndex:(int)rowIndex;

.m

- (void)setRowIndex:(int)rowIndex
{
     //assign your variable to rowIndex

}

完成此操作后,您可以编辑此代码以传递一系列信息。

答案 3 :(得分:0)

使用方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

您可以通过索引路径获取单元格:

  UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

代码:

 - (void)tableView:(UITableView *)tblView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    {

          UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    }
获取单元格数据后,

可以使用它 回答问题2:

你可以通过seque在界面构建器中连接你的单元格与下一个vc,并在方法prepareforseque中将数据传递给

  

segue.destenationViewController.yourPoperty   现在在viewdidload方法中:

self.title = self.property