对不起任何代码行的问题表示歉意。如果可能的话,我需要建议如何继续。
用Swift语言。
我们假设有一个带有两个控制器的应用程序 - UITableViewController
,其中嵌入了NavigationController
作为主要内容。当您在表格中选择一行时,请打开UIViewController
,其中会显示有关所选值的详细信息。
是否可以这样做?应用程序启动时,以编程方式模拟表中第一行的选择,并立即显示UIViewController
,其中包含有关所选值的详细信息。从此控制器可以通过UITableViewController
返回NavigationController
。
我再次道歉并提前感谢你!
答案 0 :(得分:37)
是的,您可以在swift中执行此操作。只需像往常一样加载tableViewController
。您只需致电
在Swift中
let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0); //slecting 0th row with 0th section
self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None);
selectRowAtIndexPath
函数不会触发didSelectRowAtIndexPath:
之类的委托方法,因此您必须手动触发此委托方法
self.tableView(self.tableView, didSelectRowAtIndexPath: rowToSelect); //Manually trigger the row to select
或者如果您使用segue推送ViewControllers
,则必须触发performSegueWithIdentifier
self.performSegueWithIdentifier("yourSegueIdentifier", sender: self);
现在你可以在didSelectRowAtIndexpath
中推送viewController。要选择第一部分中的第一行或执行whaterver,你已经用didSelectRowAtIndexpath:
tableView
写了
至于您的情况,只需按viewController
选择第0个索引didSelectRowAtIndexPath
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!){
if indexPath.row == 0 {
self.navigationController.pushViewController(yourViewControllerToPush, animated: YES);
}
//handle other index or whatever according to your conditions
}
它将显示推送的视图控制器,如果您不想为视图控制器设置动画,只需将NO
传递给pushViewController
方法。
按Back
按钮,您将返回viewController
在您的情况下,只需在viewDidAppear
if firstStart {
firstStart = false
let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0)
self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition:UITableViewScrollPosition.None)
self.performSegueWithIdentifier("showForecastSelectedCity", sender: self)
}
答案 1 :(得分:6)
您也可以通过访问tableView Delegate来强制执行此操作" didSelectRowAtIndex"解雇
//以编程方式选择要使用的行
self.tableView.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: UITableViewScrollPosition.Top)
//以编程方式选择行不会触发" didSelectRowAtIndexPath"功能所以我们必须按照下面的手动强制点火
self.tableView.delegate!.tableView!(tableView, didSelectRowAtIndexPath: indexPath!)