我似乎无法找到如何展示另一个' UIViewController'单击一行时查看。因此,当单击该行时,它将转到下一个视图并显示有关行的更多信息。
我想我需要使用像- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath
委托这样的东西。那么我的第二个问题是如何将该行中的数据(如标题)传递给下一个视图控制器?
由于
答案 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说的那样,如果你做一些研究它会更好,这是非常基础的,我会建议你:
精彩教程的网站,他们真的有你需要的一切。
答案 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