2016-03-30 141 views
-1

這是一個奇怪的問題,並且直觀地反映了tableview是如何工作的,但是我有一個在tableview中創建3個單元格的數組。由於我們目前正在進行一個測試版,我們只需要用戶在點擊第一個單元格時繼續使用,而不需要使用另外兩個單元格。Segue Tableview當只有一個單元格被點擊時

這裏是我們的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) 

    } 
} 



} 

正如你可以看到我只想認爲,如果應用程序沒有采取任何措施Segue公司,當你點擊「riverrockplace」如果你點擊任何東西它是確定但如果它返回彈出式通知會更好。

也在這個階段,當我繼續,我不需要與我的數據。

回答

0

有兩種方法可以處理這個問題,使用塞格斯的不同的類型:

  1. 您可以添加對細胞的選擇火災,通過控制從您的拖動到目的地的SEGUE。然後,您可以執行方法shouldPerformSegueWithIdentifier:,並使用sender確定哪個單元正在調用它(因爲這將是sender),並根據該信息觸發或不觸發。
  2. 您可以通過從TableViewController頂部的黃色控制器圖標拖動到目的地來添加自定義的繼續。然後,在didSelectRowAtIndexPath中,確定是否應該繼續。如果您應該,請致電performSegueWithIdentifier:
0

落實didSelect委託方法是這樣的:

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

您可以指定userInteractionEnabled = false來,你不會使用,以防止點擊動畫的發生,因爲它可能會造成混亂的細胞如果用戶點擊單元格,它的樣式會發生變化並且什麼都不會發生。

另外,如果你想彈出警報提供一些有用的信息,您可以使用didSelectRowAtIndexPath方法方法從代碼中使用indexpath.row的selction的指數,由Md.Muzahidul

0
的建議進行過濾

如果我正確理解你的問題,你需要做的是當你點擊tableView的第一個單元格時,你要導航到XViewController。

在這種情況下,你必須使用條件塞格斯,您可以通過點擊FilesOwner拖動SEGUE如下圖所示的圖像中創建,而不是電池本身,

enter image description here

然後選擇Segue公司剛纔創建並設置其屬性檢查器標識如下圖所示的圖像,

enter image description here

接下來,你需要火SEGUE在d idSelectRowAtIndexPath,更改代碼,如下圖所示,

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

希望這會幫助你。

相關問題