2016-03-30 16 views
-1

Dies ist eine seltsame Frage und kontra intuitiv, wie Tabellenansichten funktionieren, aber ich habe ein Array, das 3 Zellen in der Tabellenansicht erstellt. Da wir gerade an einer Beta arbeiten und wir nur den Benutzer brauchen, um zu segeln, wenn sie auf die erste Zelle klicken, müssen die 2 anderen Zellen NICHT benutzt werden.Segue Tabellenansicht, wenn nur eine Zelle angeklickt wird

Hier einige Code unserer 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) 

    } 
} 



} 

Wie Sie Ich will nur den Blick auf segue sehen können, wenn Sie auf „riverrockplace“ klicken, wenn Sie auf etwas klicken sonst ist es ok, wenn die App nichts tut aber es wäre noch besser, wenn es eine Popup-Benachrichtigung zurückgeben würde.

Auch in diesem Stadium, wenn ich segne, brauche ich keine Daten mit mir zu nehmen.

Antwort

0

Es gibt zwei Möglichkeiten, wie Sie dieses Problem nähern können, verschiedene Arten von segues mit:

  1. Sie können eine segue hinzufügen, die Brände auf Zellenauswahl, durch Steuerung von Ihrer Zelle zu dem Ziel ziehen. Sie können dann die Methode shouldPerformSegueWithIdentifier: implementieren und unter Verwendung der sender herausfinden, welche Zelle es aufruft (wie das wird sender sein) und Feuer oder nicht basierend auf dieser Information.
  2. Sie können einen benutzerdefinierten Übergang hinzufügen, indem Sie vom gelben Controller-Symbol oben auf Ihrem TableViewController zum Ziel ziehen. Dann, in didSelectRowAtIndexPath, bestimmen, ob Sie segue sollten. Wenn Sie sollten, dann rufen Sie performSegueWithIdentifier:.
0

Umsetzung des didSelect Delegate Methode wie folgt:

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

Sie können userInteractionEnabled zuweisen = false zu den Zellen, die Sie nicht die Klick-Animation geschieht zu verhindern verwenden, wie es verwirrend sein könnte Wenn sie auf die Zelle klicken, ändert sich ihr Styling und nichts passiert.

Alternativ, wenn Sie eine Warnung liefern einige nützliche Informationen Pop-up möchten, können Sie die DidSelectRowAtIndexPath Methode aus dem Code verwenden, der Index des selction zu filtern indexpath.row verwenden, wie von Md.Muzahidul vorgeschlagen

0

Wenn ich Ihr Problem richtig verstanden habe, müssen Sie nur zu XViewController navigieren, wenn Sie nur auf die erste Zelle der tableView klicken.

In diesem Fall müssen Sie bedingte segues verwenden, die Sie durch Ziehen segue indem Sie auf den FilesOwner und nicht die Zelle selbst, unten im Bild erstellen kann

enter image description here

Dann wird die Auswahl wie abgebildet segue Sie gerade erstellt haben, und legen Sie seine Kennung im Attribut-Inspektoren, wie in Bild unten gezeigt,

enter image description here

als nächste Sie die segue in dem d Feuer müssen idSelectRowAtIndexPath, ändern Sie den Code wie unten dargestellt,

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

Dann, wie unten die Segue überprüfen,

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 
    } 
} 

Hope this Sie helfen würde.

Verwandte Themen