使用if语句在一个navigationController中推送tableViewController

时间:2012-05-30 17:19:50

标签: ios uitableview uinavigationcontroller pushviewcontroller

以下是ProfilTableViewController.m的表视图委托中的if语句的简要说明:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
UITableViewCell *currentCell =(UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
// Navigation logic may go here. Create and push another view controller.
if (currentCell.textLabel.text==@"phrase") {
    MainViewController *phraseViewController =[[MainViewController alloc] initWithNibName:@"mesPhrase" bundle:nil];
    [self.navigationController pushViewController:phraseViewController animated:YES];
}

在故事板上,我创建了从ProfilTVC的单元格到MainViewController的推送,并将TableViewController更改为“MainViewController”

当我运行应用程序时,单击ProfilViewController中的单元格不会执行任何操作:/ 跆拳道?

欢呼声, 路易斯

2 个答案:

答案 0 :(得分:1)

currentCell.textLabel.text==@"phrase"比较字符串的地址,而不是内容。查看isEqualToString:方法。

答案 1 :(得分:0)

现在您所要做的就是使用prepareFor segue,如下所示:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure we're referring to the correct segue
if ([[segue identifier] isEqualToString:@"yourIdentifier"]) {


   DestinationController *destination = [segue destinationViewController];

    // get the selected index
    NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row];
    //now you can add informations you want to send to the new controller
    //example:
    destination.selectedItem=[myArray objectAtIndex:selectedIndex];

 }

}

不要忘记更改segue标识符:选择两个控制器之间的连线并在右侧的属性检查器中设置它必须等于youIdentifier