2016-09-22 38 views
0

我有一个显示用户想发布内容的帖子的提要。我想要做的是显示在某个按钮(正在工作)中发布内容的用户的名称。然后,当用户按下该按钮时,它应该显示另一个视图控制器,用户按下的按钮名称(即半工作)。点击个人档案 - swift

现在发生的情况是,当用户从帖子中按下另一个用户的名字时,其他视图控制器中显示的名称并不总是与用户按下的名称相同。

我希望你明白:-)

让我带你通过我的代码:

第一的viewController viewDidLoad中之前,我创建一个字符串:

var sendName = "No name recieved" 

再往下该页面是这样的代码:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

      let cell:updateTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! updateTableViewCell 
      let update = updates[indexPath.row] 

     cell.nameButton.setTitle(update.addedByUser, forState: .Normal) 
     sendName = (cell.nameButton.titleLabel?.text)! 

} 

我prepareForSegue:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     if(segue.identifier == "showProfileFromFeed") { 

      let yourNextViewController = (segue.destinationViewController as! profileTableViewController) 
      yourNextViewController.viaSegue = sendName 
     } 
    } 

按钮标题被改为它应该在饲料中,但必须与sendName一些错误的,因为它并不总是显示在其他的viewController作为同名按钮名称说..

希望您能理解,否则请让我知道:-)

回答

0

这在我看来,在那里你更新sendName变量的问题。每当一个新的单元即将被显示,或者当表被重绘时,调用cellForRowAtIndexPath

我不确切知道你的应用程序的工作方式,但是如果你可以同时在屏幕上显示多个帖子,那么这意味着sendName变量只有在你按下底部按钮时才是正确的最后的职位。

如果你按下任何其他帖子的按钮,那么你仍然会得到最底部帖子的名称。

我会推荐使用一个IBAction,当点击按钮来改变sendName变量时触发。然后你可以手动启动赛格。

+0

我相信这也是问题,我添加了一个print()函数 - 这也是我发现的..我只是不知道如何正确地做到这一点,所以我要按的名称是一个正在发送到下一个viewController? –

+0

我猜如果你是以编程方式创建按钮,那么你将不得不添加一个目标到按钮,该按钮链接到您创建的自定义函数。然后函数可以定义'sendName'变量,然后启动segue。你可能不得不在SO上查找一些这样的东西来真正实现你的目标,但希望这可以让你知道该怎么做。 –