这是一个奇怪的问题,对于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"时,我只希望视图能够显示出来。如果你点击任何其他内容,如果应用程序什么也不做,但如果它返回弹出通知则会更好。
同样在这个阶段,当我离开时,我不需要随身携带数据。
答案 0 :(得分:0)
使用不同类型的segue有两种方法可以解决这个问题:
shouldPerformSegueWithIdentifier:
,并使用sender
确定哪个单元格正在调用它(因为它将是sender
),并根据该信息激发与否。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拖动segue而不是单元格本身来创建,如下图所示
然后选择刚刚创建的segue并在属性检查器中设置其标识符,如下图所示,
接下来,您需要在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
}
}
希望这会对你有所帮助。