我是iPhone开发的新手,我想在用户点击特定行时移动到另一个页面。因此,如果他们点击第一行,我希望页面重定向到第一个视图控制器,依此类推。每行都有自己的视图控制器。
答案 0 :(得分:3)
首先,您不需要为每一行设置不同的视图控制器(除非您有充分的理由这样做)。
正确的方法是设置1个视图控制器,它将适合raws中的所有单元格,并根据所选行更改其数据。
你这样做的方式是:
in the - DidSelectRowAtIndexPath function in your implementation file you shuld:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//allocate your view controller
DetailedViewController *detailedViewController = [[DetailedViewController alloc] init];
//send properties to your view controller
detailedViewController.property1 = someProperty1;
detailedViewController.property2 = someProperty2;
//push it to the navigationController
[[self navigationController] pushViewController:detailedViewController animated:YES];
[detailedViewController release];
}
我建议您首先使用苹果示例,它们非常棒并且有很多:
祝你好运答案 1 :(得分:2)
didSelectRowAtIndexPath
UITableView
代表中的@kashyap您必须检查点击indexPath
的条件并打开相应的viewControllers
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Navigation logic may go here -- for example, create and push another view controller.
FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
switch (indexPath.row) {
case 0:
[self.navigationController pushViewController:firstViewController animated:YES];
[firstViewController release];
break;
case 1:
[self.navigationController pushViewController:secondViewController animated:YES];
[secondViewController release];
break;
}//Likewise do for the no of rows you have in your `UITableView`
希望你明白我的意思.....祝你好运!
答案 2 :(得分:0)
答案 3 :(得分:0)
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
switch (indexPath.row) {
case "X"
// Allocate the viewController
[navigationcontroller.pushViewController:"yourviewcontroller" animated:YES];
[release "yourviewcontroller"];
break;
default:
break;
}
}
编辑:没有意识到你在尝试什么。正如shani所说,如果不需要,你不应该为每一行创建一个viewcontroller。尝试更改每行的数据源,但使用相同的viewcontroller。所以忘记这个实现。
答案 4 :(得分:0)
易:
在此委托函数中创建并推送视图控制器:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
}
答案 5 :(得分:0)
听起来好像使用UINavigationController就是你想要的。
然后从表视图中将“第一个视图”推送到导航控制器的堆栈,例如,从您的UITableView委托:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
// indexPath.row == 0
FirstViewController* firstVC = [[FirstViewController alloc] initWithNibName...];
[self.navigationController firstVC animated:YES];
[firstVC release];
...
}
答案 6 :(得分:0)
这是我第一次开始时遇到的问题。这是我用于此的代码。 在subviewcontroller中,我有自己的构造函数,如
-(id)initWithName:(NSString*)naMe
{
name=naMe;
return self;
}
didSelectRowAtIndexPath
代理方法UITableView
。我分配它
MyListView mylistview=[[MyListView alloc] initWithName:@"name"];
[self.navigationController pushViewController:mylistview animated:YES];
[mylistview release];
答案 7 :(得分:0)
NSInteger row = indexPath.row;
UIViewController *newFrontController = nil;
if (row == 0)
{
YourViewController *yourViewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
newFrontController = [[UINavigationController alloc] initWithRootViewController:peopleViewController];
[self.navigationController setNavigationBarHidden:YES];
} else if(row == 1){
//do your code
}
在tableView中的didSelectRowAtIndexPath中执行此操作。
答案 8 :(得分:0)
当用户点击行时,您可以移动到另一页,只需通过“ Control Drag”从单元格到ViewController进行segue并将segue类型设置为“ Push”即可。