在UITableView搜索点击上显示新控制器

时间:2016-04-12 08:38:54

标签: ios objective-c iphone xcode uitableview

现在我有一个searchBar用于搜索关键字。当我选择菜单时,我想显示dataViewController。如何显示dataViewController? 抱歉英语不好。

enter image description here

enter image description here

5 个答案:

答案 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拖到下一个控制器。