答案 0 :(得分:2)
覆盖tableView:didSelectRowAtIndexPath:
并从那里启动dataviewcontroller。
答案 1 :(得分:0)
您可以选择行
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ChatPageVC *u = [[ChatPageVC alloc]init];
u= [self.storyboard instantiateViewControllerWithIdentifier:@"ChatPageVC"];
[self.navigationController pushViewController:u animated:YES];
}
我在这里使用导航控制器,您可以使用presentviewcontroller
作为项目中使用的导航控制器。
答案 2 :(得分:0)
在tableView:didSelectRowAtIndexPath:
中,创建dataViewController
的对象并展示它(或推送它)。
例如,在Swift中,
presentViewController(dataViewController, animated:false)
或Objective-C,
[self presentViewController:controller animated:YES completion:NULL];
代码可能不完美。
答案 3 :(得分:0)
通过使用segues,它可以让您的生活更轻松。您不必实施didSelectRowAtIndexPath
。您只需将segue从tableview的单元格拖到新的UIViewController,给它起一个名称,并在prepareForSegue
中编写以下内容,该代码已由Xcode实现:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"YourSegueIdentifier"]) {
//Get table data
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
NSString *text = [self.dataTable objectAtIndex:[path row]];
// Set Data to Destination View Controller
[segue.destinationViewController.textView setText:text];
}
}
答案 4 :(得分:-1)
使用tableView:didSelectRowAtIndexPath:
;和pushViewController:
。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DataViewController *vc = [[AnotherClassViewController alloc] initWithNibName:@"AnotherClassView" bundle:nil];
//You could also pass [NSBundle mainBundle] instead of nil if you have issues
[self.navigationController pushViewController:viewController animated:YES];
}
如果您使用的是故事板和segue
;那么你需要:
链接故事板中的两个视图控制器(以创建箭头)并为其指定标识符,例如“ToDetails”,然后在代码中使用
[self.performSegueWithIdentifier:@"ToDetails"];
如果您正在使用故事板,则可以将segue从tableview拖到下一个控制器。