单击一个单元格时查看Tableview

时间:2016-03-30 05:03:43

标签: ios iphone swift uitableview

这是一个奇怪的问题,对于tableviews的工作原理是直观的,但是我有一个数组可以在tableview中创建3个单元格。由于我们目前正在进行测试,我们只需要用户在点击第一个单元格时就需要使用其他2个单元格。

以下是我们tableview的一些代码

import UIKit

class TableViewController: UITableViewController {
let locationManager = CLLocationManager()
//Store Array of Images
var imageArray = ["riverparkplace","mayfair","jamesonhouse",]
//Array of Image Names
var textArray = ["River Park Place", "MayFair", "Jameson House"]

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    locationManager.requestAlwaysAuthorization()
    if KCSUser.activeUser() == nil {
        print("User Not Logged In")
        performSegueWithIdentifier("jobsiteTOLogin", sender: nil)
    } else {
        //user is logged in and will be loaded on first call to Kinvey
        var currentusername = KCSUser.activeUser().givenName
        print("User named:\(currentusername) has logged in ")
    }


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell!

    //cell.textLabel?.text = textArray[indexPath.row]

    let imageView = cell.viewWithTag(1) as! UIImageView
    imageView.image = UIImage(named: imageArray[indexPath.row])

    let textLabel2 = cell.viewWithTag(2) as! UILabel
    textLabel2.text = textArray[indexPath.row]

    return cell
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return imageArray.count
}

//On Click
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

}


//Buttons
@IBAction func logoutButton(sender: AnyObject) {
    if KCSUser.activeUser() == nil{
        //User is not logged in
        print("Cant log out user since they are not logged in!!")

    }else{
        KCSUser.activeUser().logout()
        print("User Logged out")
        performSegueWithIdentifier("jobsiteTOLogin", sender: nil)

    }
}



}

正如你所看到的,当你点击" riverrockplace"时,我只希望视图能够显示出来。如果你点击任何其他内容,如果应用程序什么也不做,但如果它返回弹出通知则会更好。

同样在这个阶段,当我离开时,我不需要随身携带数据。

4 个答案:

答案 0 :(得分:0)

使用不同类型的segue有两种方法可以解决这个问题:

  1. 您可以通过控制从单元格拖动到目标来添加触发单元格选择的segue。然后,您可以实现方法shouldPerformSegueWithIdentifier:,并使用sender确定哪个单元格正在调用它(因为它将是sender),并根据该信息激发与否。
  2. 您可以通过从TableViewController顶部的黄色控制器图标拖动到目的地来添加自定义segue。然后,在didSelectRowAtIndexPath中,确定是否应该删除。如果您愿意,请拨打performSegueWithIdentifier:

答案 1 :(得分:0)

实现didSelect Delegate方法,如下所示:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        if indexPath.row == 0{
            // perform segue
        }else{
            // no action needed
        }
    }

答案 2 :(得分:0)

您可以将userInteractionEnabled = false分配给您不会用来阻止点击动画发生的单元格,因为如果用户点击单元格,其样式更改并且没有任何反应,则可能会让用户感到困惑。< / p>

或者,如果要弹出警报以提供一些有用的信息,可以使用代码中的didSelectRowAtIndexPath方法使用indexpath.row过滤选择的索引,如Md.Muzahidul所建议的那样

答案 3 :(得分:0)

如果我理解你的问题,那么当你点击tableView的第一个单元格时,你需要做的就是导航到XViewController。

在这种情况下,您必须使用条件segues,您可以通过单击FilesOwner拖动se​​gue而不是单元格本身来创建,如下图所示

enter image description here

然后选择刚刚创建的segue并在属性检查器中设置其标识符,如下图所示,

enter image description here

接下来,您需要在didSelectRowAtIndexPath中触发segue,更改您的代码,如下所示,

//On Click
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
     self.performSegueWithIdentifier("ConditionalNavigationToXViewController", sender: self)
}

然后检查下面的segue,

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    if (segue.identifier == "ConditionalNavigationToXViewController")     {
       segue.destinationViewController as? XViewController
    }
}

希望这会对你有所帮助。