With button in UICollectionViewCell , How do I grab the content detail of the specific Cell?
I have addToCartButton
in UICollectionViewCell
. What I have to do is to grab the details of the product of the specific cell when the user tapped the button and list it to the another UIViewController
. How can It be done in easy and reliable way?
Here is what I have done :
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell?.trendingProductImage.downloadImages(url: trendingProductsDataArray[indexPath.row].images![0].source!)
cell?.trendingProducttitle.text = trendingProductsDataArray[indexPath.row].title
cell?.trendingProductSellingPrice.text = trendingProductsDataArray[indexPath.row].salePrice
cell?.struckTest(unstruckedText: trendingProductsDataArray[indexPath.row].regularPrice!)
cell?.trendingAddToCartBtn.addTarget(self, action: #selector(addToCartBtnTapped), for: .touchUpInside)
return cell!
}
@objc
func addToCartBtnTapped(){
}
ios swift uicollectionview
add a comment |
I have addToCartButton
in UICollectionViewCell
. What I have to do is to grab the details of the product of the specific cell when the user tapped the button and list it to the another UIViewController
. How can It be done in easy and reliable way?
Here is what I have done :
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell?.trendingProductImage.downloadImages(url: trendingProductsDataArray[indexPath.row].images![0].source!)
cell?.trendingProducttitle.text = trendingProductsDataArray[indexPath.row].title
cell?.trendingProductSellingPrice.text = trendingProductsDataArray[indexPath.row].salePrice
cell?.struckTest(unstruckedText: trendingProductsDataArray[indexPath.row].regularPrice!)
cell?.trendingAddToCartBtn.addTarget(self, action: #selector(addToCartBtnTapped), for: .touchUpInside)
return cell!
}
@objc
func addToCartBtnTapped(){
}
ios swift uicollectionview
add a comment |
I have addToCartButton
in UICollectionViewCell
. What I have to do is to grab the details of the product of the specific cell when the user tapped the button and list it to the another UIViewController
. How can It be done in easy and reliable way?
Here is what I have done :
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell?.trendingProductImage.downloadImages(url: trendingProductsDataArray[indexPath.row].images![0].source!)
cell?.trendingProducttitle.text = trendingProductsDataArray[indexPath.row].title
cell?.trendingProductSellingPrice.text = trendingProductsDataArray[indexPath.row].salePrice
cell?.struckTest(unstruckedText: trendingProductsDataArray[indexPath.row].regularPrice!)
cell?.trendingAddToCartBtn.addTarget(self, action: #selector(addToCartBtnTapped), for: .touchUpInside)
return cell!
}
@objc
func addToCartBtnTapped(){
}
ios swift uicollectionview
I have addToCartButton
in UICollectionViewCell
. What I have to do is to grab the details of the product of the specific cell when the user tapped the button and list it to the another UIViewController
. How can It be done in easy and reliable way?
Here is what I have done :
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell?.trendingProductImage.downloadImages(url: trendingProductsDataArray[indexPath.row].images![0].source!)
cell?.trendingProducttitle.text = trendingProductsDataArray[indexPath.row].title
cell?.trendingProductSellingPrice.text = trendingProductsDataArray[indexPath.row].salePrice
cell?.struckTest(unstruckedText: trendingProductsDataArray[indexPath.row].regularPrice!)
cell?.trendingAddToCartBtn.addTarget(self, action: #selector(addToCartBtnTapped), for: .touchUpInside)
return cell!
}
@objc
func addToCartBtnTapped(){
}
ios swift uicollectionview
ios swift uicollectionview
edited Jan 19 at 10:07
James Z
11.1k71935
11.1k71935
asked Jan 19 at 6:33
KiranKiran
64
64
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let productData = trendingProductsDataArray[indexPath.row]
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell?.trendingProductImage.downloadImages(url: productData.images![0].source!)
cell?.trendingProducttitle.text = productData.title
cell?.trendingProductSellingPrice.text = productData.salePrice
cell?.struckTest(unstruckedText: productData.regularPrice!)
cell?.trendingAddToCartBtn.addTarget(self, action: #selector(addToCartBtnTapped(sender:)), for:.touchUpInside)
return cell!
}
@objc func addToCartBtnTapped(sender:UIButton) {
let buttonPosition:CGPoint = sender.convert(CGPoint.zero, to:self.tblUsers)
let indexPath = self.tblUsers.indexPathForRow(at: buttonPosition)
let productData = trendingProductsDataArray[indexPath.row]
}
Try this
add a comment |
you can define protocol on collectionViewCell
and fire it when the addToCard
button hits on each cell, and in your viewController
implement of delegate:
protocol CollectionViewCellDelegate: class {
func addtoCard(_ cell: TrendingProductsCVCell)
}
class TrendingProductsCVCell: UITableViewCell {
weak var delegate: CollectionViewCellDelegate?
// ... the rest of your code
@IBAction func addToCardButtonClicked(_ sender: UIButton) { //action of ***addToCard***
delegate?.addToCard(self)
}
}
class viewController: CollectionViewCellDelegate { //and what you want to implement
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell.delegate = self
// ... the rest of your code
return cell
}
func addToCard(cell: TrendingProductsCVCell) {
//do what you want with your cell and its content
}
}
when you have button action then you can retrieve data easily with touch event or by sender tag, Its to complex to use delegate.
– Khush
Jan 21 at 3:47
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54264670%2fwith-button-in-uicollectionviewcell-how-do-i-grab-the-content-detail-of-the-sp%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let productData = trendingProductsDataArray[indexPath.row]
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell?.trendingProductImage.downloadImages(url: productData.images![0].source!)
cell?.trendingProducttitle.text = productData.title
cell?.trendingProductSellingPrice.text = productData.salePrice
cell?.struckTest(unstruckedText: productData.regularPrice!)
cell?.trendingAddToCartBtn.addTarget(self, action: #selector(addToCartBtnTapped(sender:)), for:.touchUpInside)
return cell!
}
@objc func addToCartBtnTapped(sender:UIButton) {
let buttonPosition:CGPoint = sender.convert(CGPoint.zero, to:self.tblUsers)
let indexPath = self.tblUsers.indexPathForRow(at: buttonPosition)
let productData = trendingProductsDataArray[indexPath.row]
}
Try this
add a comment |
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let productData = trendingProductsDataArray[indexPath.row]
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell?.trendingProductImage.downloadImages(url: productData.images![0].source!)
cell?.trendingProducttitle.text = productData.title
cell?.trendingProductSellingPrice.text = productData.salePrice
cell?.struckTest(unstruckedText: productData.regularPrice!)
cell?.trendingAddToCartBtn.addTarget(self, action: #selector(addToCartBtnTapped(sender:)), for:.touchUpInside)
return cell!
}
@objc func addToCartBtnTapped(sender:UIButton) {
let buttonPosition:CGPoint = sender.convert(CGPoint.zero, to:self.tblUsers)
let indexPath = self.tblUsers.indexPathForRow(at: buttonPosition)
let productData = trendingProductsDataArray[indexPath.row]
}
Try this
add a comment |
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let productData = trendingProductsDataArray[indexPath.row]
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell?.trendingProductImage.downloadImages(url: productData.images![0].source!)
cell?.trendingProducttitle.text = productData.title
cell?.trendingProductSellingPrice.text = productData.salePrice
cell?.struckTest(unstruckedText: productData.regularPrice!)
cell?.trendingAddToCartBtn.addTarget(self, action: #selector(addToCartBtnTapped(sender:)), for:.touchUpInside)
return cell!
}
@objc func addToCartBtnTapped(sender:UIButton) {
let buttonPosition:CGPoint = sender.convert(CGPoint.zero, to:self.tblUsers)
let indexPath = self.tblUsers.indexPathForRow(at: buttonPosition)
let productData = trendingProductsDataArray[indexPath.row]
}
Try this
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let productData = trendingProductsDataArray[indexPath.row]
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell?.trendingProductImage.downloadImages(url: productData.images![0].source!)
cell?.trendingProducttitle.text = productData.title
cell?.trendingProductSellingPrice.text = productData.salePrice
cell?.struckTest(unstruckedText: productData.regularPrice!)
cell?.trendingAddToCartBtn.addTarget(self, action: #selector(addToCartBtnTapped(sender:)), for:.touchUpInside)
return cell!
}
@objc func addToCartBtnTapped(sender:UIButton) {
let buttonPosition:CGPoint = sender.convert(CGPoint.zero, to:self.tblUsers)
let indexPath = self.tblUsers.indexPathForRow(at: buttonPosition)
let productData = trendingProductsDataArray[indexPath.row]
}
Try this
answered Jan 19 at 6:46
KhushKhush
1319
1319
add a comment |
add a comment |
you can define protocol on collectionViewCell
and fire it when the addToCard
button hits on each cell, and in your viewController
implement of delegate:
protocol CollectionViewCellDelegate: class {
func addtoCard(_ cell: TrendingProductsCVCell)
}
class TrendingProductsCVCell: UITableViewCell {
weak var delegate: CollectionViewCellDelegate?
// ... the rest of your code
@IBAction func addToCardButtonClicked(_ sender: UIButton) { //action of ***addToCard***
delegate?.addToCard(self)
}
}
class viewController: CollectionViewCellDelegate { //and what you want to implement
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell.delegate = self
// ... the rest of your code
return cell
}
func addToCard(cell: TrendingProductsCVCell) {
//do what you want with your cell and its content
}
}
when you have button action then you can retrieve data easily with touch event or by sender tag, Its to complex to use delegate.
– Khush
Jan 21 at 3:47
add a comment |
you can define protocol on collectionViewCell
and fire it when the addToCard
button hits on each cell, and in your viewController
implement of delegate:
protocol CollectionViewCellDelegate: class {
func addtoCard(_ cell: TrendingProductsCVCell)
}
class TrendingProductsCVCell: UITableViewCell {
weak var delegate: CollectionViewCellDelegate?
// ... the rest of your code
@IBAction func addToCardButtonClicked(_ sender: UIButton) { //action of ***addToCard***
delegate?.addToCard(self)
}
}
class viewController: CollectionViewCellDelegate { //and what you want to implement
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell.delegate = self
// ... the rest of your code
return cell
}
func addToCard(cell: TrendingProductsCVCell) {
//do what you want with your cell and its content
}
}
when you have button action then you can retrieve data easily with touch event or by sender tag, Its to complex to use delegate.
– Khush
Jan 21 at 3:47
add a comment |
you can define protocol on collectionViewCell
and fire it when the addToCard
button hits on each cell, and in your viewController
implement of delegate:
protocol CollectionViewCellDelegate: class {
func addtoCard(_ cell: TrendingProductsCVCell)
}
class TrendingProductsCVCell: UITableViewCell {
weak var delegate: CollectionViewCellDelegate?
// ... the rest of your code
@IBAction func addToCardButtonClicked(_ sender: UIButton) { //action of ***addToCard***
delegate?.addToCard(self)
}
}
class viewController: CollectionViewCellDelegate { //and what you want to implement
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell.delegate = self
// ... the rest of your code
return cell
}
func addToCard(cell: TrendingProductsCVCell) {
//do what you want with your cell and its content
}
}
you can define protocol on collectionViewCell
and fire it when the addToCard
button hits on each cell, and in your viewController
implement of delegate:
protocol CollectionViewCellDelegate: class {
func addtoCard(_ cell: TrendingProductsCVCell)
}
class TrendingProductsCVCell: UITableViewCell {
weak var delegate: CollectionViewCellDelegate?
// ... the rest of your code
@IBAction func addToCardButtonClicked(_ sender: UIButton) { //action of ***addToCard***
delegate?.addToCard(self)
}
}
class viewController: CollectionViewCellDelegate { //and what you want to implement
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = trendingProductCV.dequeueReusableCell(withReuseIdentifier: "TrendingProductsCVCell", for: indexPath) as? TrendingProductsCVCell
cell.delegate = self
// ... the rest of your code
return cell
}
func addToCard(cell: TrendingProductsCVCell) {
//do what you want with your cell and its content
}
}
answered Jan 19 at 7:29
Arash EtemadArash Etemad
615217
615217
when you have button action then you can retrieve data easily with touch event or by sender tag, Its to complex to use delegate.
– Khush
Jan 21 at 3:47
add a comment |
when you have button action then you can retrieve data easily with touch event or by sender tag, Its to complex to use delegate.
– Khush
Jan 21 at 3:47
when you have button action then you can retrieve data easily with touch event or by sender tag, Its to complex to use delegate.
– Khush
Jan 21 at 3:47
when you have button action then you can retrieve data easily with touch event or by sender tag, Its to complex to use delegate.
– Khush
Jan 21 at 3:47
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54264670%2fwith-button-in-uicollectionviewcell-how-do-i-grab-the-content-detail-of-the-sp%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown