代码之家  ›  专栏  ›  技术社区  ›  mahan

以编程方式从ViewController导航到didSelectRowAt上的另一个

  •  0
  • mahan  · 技术社区  · 6 年前

    我有一个 UIViewController 包含自定义 UITableView UITableViewCell 我也是。

    如何从第一个开始导航 ViewController 当您选择/单击其中一行时,是否将其添加到另一行?

    注意

    我没用过 StoryBoard

    这是我的密码。每个类都是外部文件。如果你需要更多的代码,请告诉我。

    class TestViewController: UIViewController, UITableViewDelegate {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            view.backgroundColor = .white
            view.addSubview(testTableView)
        }
    
        let testTableView: TestTableView = {
            let table = TestTableView()
            table.register(TestTableViewCell.self, forCellReuseIdentifier: TestTableViewCell.identifier)
            return table
        }()
    }
    
    class TestTableView: UITableView,  UITableViewDelegate, UITableViewDataSource {
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return 1
        }
    
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
           let cell = tableView.dequeueReusableCell(withIdentifier: TestTableViewCell.identifier, for: indexPath)
            return cell
        }
    }
    
    
    
    class TestTableViewCell: UITableViewCell {
        static let identifier  = "testCell"
    }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Mo Abdul-Hameed Martheli    6 年前

    以下是完整的答案:

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let newViewController = NewViewController()
        self.navigationController?.pushViewController(newViewController, animated: true)
    }
    
        2
  •  0
  •   Mo Abdul-Hameed Martheli    6 年前
     override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
         let vc = yourCustomVCName (nibName: "yourCustomVC nibName" , bundle : nil)
         self.present(vc, animated: true , completion: nil)  
    }
    
        3
  •  0
  •   gsk_fs    3 年前

    有两种方法可以查看下一个viewController

    1. 如果你想展示。。。。。。。

    从下到上设置动画

    yourTableView.deselectRow(at: indexPath, animated: true)//used for single Tap
    let vC = YourViewController (nibName: "" , bundle : nil)
            vC.modalPresentationStyle = .fullScreen //this line is optional for fullscreen
            self.present(vC, animated: true , completion: nil)
    

    从右向左设置动画

    yourTableView.deselectRow(at: indexPath, animated: true)
    let vC = YourViewController()
    self.navigationController?.pushViewController(vC, animated: true)