我想实现这个功能:在左侧滑出菜单中,当我选择一张图片时,这张图片将在家庭视图控制器上生成。 链接是拍摄的图像。 http://postimg.org/image/kcd3jhd6x/
以下是代码:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let halfSizeOfView = 25.0
let insetSize = CGRectInset(self.view.bounds, CGFloat(Int(2 * halfSizeOfView)), CGFloat(Int(2 * halfSizeOfView))).size
let pointX = CGFloat(UInt(arc4random() % UInt32(UInt(insetSize.width))))
let pointY = CGFloat(UInt(arc4random() % UInt32(UInt(insetSize.height))))
if(searchActive){
imageName=filtered[indexPath.row]+".png"
}else{
imageName=data[indexPath.row]+".png"
}
let wid=UIImage(named: imageName)?.size.width
let hei=UIImage(named: imageName)?.size.height
let newImageView = ImageViewList(frame: CGRectMake(pointX, pointY, wid!, hei!))
newImageView.image=UIImage(named: imageName)
let vc=HomeViewController()
vc.view.addSubview(newImageView)
}
因为我想在按下单元格时保持滑出菜单,所以我无法执行performSegueWithIdentifier功能。我也尝试过协议传递值方法,但似乎无法正常工作。有人提出建议吗?感谢!!!
答案 0 :(得分:0)
您需要将弱引用(delegate
)存储到SideMenu
控制器内的Home
控制器。
在SideMenu
控制器
protocol SideMenuDelegate: NSObjectProtocol {
func menuItemSelected(image: UIImage)
}
将委托添加到SideMenu
控制器
weak var delegate: SideMenuDelegate?
将HomeController
实例设置为代理
let homeVC = HomeViewController()
let sideMenu = SideMenuController()
sideMenu.delegate = homeVC
在SideMenuDelegate
类
HomeViewController
协议
class HomeViewController: UIViewController, SideMenuDelegate {
func menuItemSelected(image: UIImage) {
imageView.image = image
}
}
在SideMenu
通话方式
delegate?.menuItemSelected(image)
SideMenu
和Home
控制器应同时在某处创建。无论如何,它可能是AppDelegate
或MainViewController
。