2015-11-05 21 views
0

在我的應用程序中,每個用戶都設置一個配置文件頁面,所有這些信息都存儲在Parse上。噹噹前用戶點擊一個按鈕時,它會跳轉到一個tableViewController,該單元顯示應用程序中所有其他用戶的單元格。在每個單元格中都有一個按鈕,用戶按下該按鈕可以查看他們選擇的用戶的完整配置文件頁面。我有一個VC設置來保存所有信息,我只是不知道如何顯示當前用戶選擇的特定用戶。我如何挑選出所選的用戶信息?我已經閱讀了關於關係查詢的Parse文檔,但我似乎無法理解它。 https://parse.com/docs/ios/guide#queries-relational-queries在Swift中顯示一個特定用戶及其所有存儲在不同視圖控制器上的信息

因此,在更精細的細節基本上,我的所有用戶都顯示在VC上。它具有名稱和個人資料圖片,當用戶點擊某個用戶旁邊的信息按鈕時,它應該打開一個新的屏幕並顯示存儲在Parse上的所有這些用戶信息。

我試圖創建一個靜態的類外

struct Data { var OtherName:String! var id:String! } 

然後在我viewDidLoad中:

let query = PFQuery(className: "_User") 
    // otherQuery.orderByDescending("createdAt") 
    query.whereKey("username", notEqualTo:PFUser.currentUser()!.username!) 
    query.findObjectsInBackgroundWithBlock { (users: [AnyObject]?, error: NSError?) -> Void in 

     if error == nil { 
      // success 

      print(users!.count) 
      for user in users! { 
       self.imageFiles.append(user["image"] as! PFFile) 
       self.instrumentText.append(user["instrument"] as! String) 
       self.nameText.append(user["name"] as! String) 
       self.ageText.append(user["age"] as! String) 
       // self.locationText.append(user["location"] as! PFGeoPoint) 

       var singleData = Data() 
       singleData.id = user.objectId 
       singleData.OtherName = user["name"] as! String 
       print("\(singleData)") 


      } // users 

然後在VC的信息按鈕塞格斯到我試圖把它與只用選擇的用戶上傳每個標籤。

 self.userName.text = "" as String 

但是「」保持空白。

後來我想也許如果我再補充一點,當更多信息按鈕被按下,這是壓在被選擇和被添加到解析選定的字符串和用戶然後我就必須從選擇呼叫的用戶字符串,當我在選定的用戶配置文件頁面上,並以這種方式調用信息,然後當用戶單擊後退按鈕時,不再選擇用戶。這似乎是我會添加並帶走很多用戶在Parse中「選擇」是否有更好的方法?

我能夠顯示所有用戶的信息,但是我怎樣才能顯示一個選擇的用戶從Parse而不使用objectId,因爲在每個單元格的頂部,每次都會返回一個不同的用戶,這取決於之前設置的設置一個不同的VC,比如只顯示特定年齡段的用戶等等。我知道我必須在觸摸的按鈕上設置某種ID,但是我完全失敗。我能找到的唯一在線幫助是爲其他語言設置的,例如。 https://parse.com/docs/js/guide#users-querying> 所以我想我的問題是:

1.有誰知道一個教程,他們可以指向我。

2.有誰知道我是如何開始的,我可以從那裏自己去。

3.任何人都可以幫忙嗎?

* Swift和Parse newbie很少或沒有其他語言的經驗。

在firstVC新代碼:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
if segue.identifier == "userProfileDetailsSegue" { 
    if let indexPath = resultsPageTableView.indexPathForSelectedRow { 

     let controller = (segue.destinationViewController) as! UserProfileDetailsViewController 

    ***error here: UserProfileDetailsViewController.userToShowDetail = indexPath.row 
    //line above is the one I can't get to work it needs to equal to the cell selected? 
    } 
    } 
} 

新代碼中destinationVC:

var userToShowDetail: PFUser? { 
    didSet { 
     self.configureView() 
    } 
} 

func configureView() { 
    // Update the user interface for the detail item. 
    if let userToShowDetail: PFUser = self.userToShowDetail { 
     if let label = self.userName { 
      nameText.append(userToShowDetail["name"] as! String) 

      // self.nameText.append(user["name"] as! String) 


    } 
} 
} 

回答

1

你將需要做幾件事情這個工作。首先,在您用來顯示其他用戶信息的視圖控制器中,您需要設置一個屬性,如var userToShowDetail: PFUser?。然後,在您的視圖中,您的應用程序的所有用戶都需要創建一個segue,以將它們從當前視圖移至詳細視圖。假設你使用的是一個TableView,你可以只連接一個原型單元格到你試圖導航的詳細視圖。然後,您需要覆蓋prepareForSegue,並將新視圖控制器的用戶設置爲與所選行相同。我不知道你如何存儲你的應用程序的用戶對象,但你應該可以做到這樣的事情。

override fun prepareForSegue(segue: UIStoryboardSegue) { 
    if segue.identifer == "segueToShowDetailInfo" { 
     //get the index path for the row that was selected 
     let indexPath = self.tableView.indexPathForSelectedRow() 
     //get the PFUser object for that particular row 
     let userToShow = self.appUsers[indexPath.row] 
     //create your new view controller 
     let newVc = segue.destinationViewController as! DestinationVC 
     //assign the new vc's property to your object 
     newVc.userToShowDetail = userToShow 
    } 
} 

但在您的查詢中,您可能不應該有用戶數據不同部分的單獨數組。你應該只是做一個陣列,稱之爲var appUsers = [PFUser](),然後當你在查詢中獲取用戶回來,只說:

for user in users! { 
    self.appUsers.append(user) as! PFUser 
} 

在那裏,現在你有對象的整個數組保存到每個用戶的參考。當有人使用你的應用程序,並選擇一個單元格時,你可以像上面那樣執行準備segue方法。

請注意,我也注意到你的變量在你的新視圖控制器中有一個didSet。在設置此變量後調用更新UI的函數將不起作用,並且可能會崩潰,因爲視圖控制器尚未有窗口。

+0

嗨@pbush25感謝您的幫助,絕對是正確的方向。除了VC1代碼中的最後一行之外,我幾乎完成了它。我編輯了上面的答案以顯示新代碼。再次感謝你的幫助! – Grace

+0

如何存儲您用來填充tableView的對象? – pbush25

+0

在自定義單元格中。 – Grace

相關問題