In meinem Projekt habe ich die linke Ansicht und die rechte Ansicht erstellt, es zeigt dynamisch zwei verschiedene Ansichten, Linke Seite erstellen FirstView und die FirstView innerhalb zeigen Titel, Kommentare, Bild und Video. Und auch RightView-Seite erstellen secondView innerhalb Show Titel, Kommentare, Bild und Video. Bild und Video zeigen nur einige der Ansichten. Das Design ist komplett programmatisch erstellt, mein Design unten gegeben wird,UIButton Aktion ruft Swift nicht auf?
Mein Problem Play-Taste (UIButton
) Aktion nicht aufgerufen wird, warum?
Ich weiß nicht, ist meinen Code unten geben, UIButton
Name: btnPlay, Aktion Name: buttonAction:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var scrollViewBase: UIScrollView!
var leftView = UIView()
var rightView = UIView()
var wholeYLeft = CGFloat()
var wholeYRight = CGFloat()
let btnPlay = UIButton()
var myArrayOfDict: NSArray = [
["Title": "MacBook", "Text": "Our goal with MacBook was to do the impossible: engineer a full-sized experience into the lightest and most compact Mac notebook ever. That meant reimagining every element to make it not only lighter and thinner but also better.", "Image":"MacBook1","video":""],
["Title": "OS X", "Text": "OS X is the operating system that makes it possible to do all the things you do on a Mac.", "Image":"","video":""],
["Title": "MacBook Pro", "Text": "Now with the force Touch trackpad,longer battery life and faster flash storage", "Image":"MacBookPro1","video":""],
["Title": "Mac Mini", "Text": "Mac mini is an affordable powerhouse that packs the entire Mac experience into a 19.7cm-square frame. Just connect your own display, keyboard and mouse, and you’re ready to make big things happen.", "Image":"Mini","video":""],
["Title": "iMac", "Text": "The idea behind iMac has never wavered: to craft the ultimate desktop experience. The best display, paired with high-performance processors, graphics and storage ", "Image":"","video":""],
["Title": "MacBook Air", "Text": "The 11-inch MacBook Air lasts up to 9 hours between charges and the 13-inch model lasts up to an incredible 12 hours. So from your morning coffee till your evening commute, you can work unplugged.", "Image":"VideoThumn","video":"Official Apple MacBook Air Video YouTube.mp4"]
]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.title = "Dynamic Cell"
leftView.frame = CGRectMake(0, 0, self.view.frame.width/2, self.view.frame.height)
rightView.frame = CGRectMake(self.view.frame.width/2, 0, self.view.frame.width/2, self.view.frame.height)
// leftView.backgroundColor = UIColor.lightGrayColor()
// rightView.backgroundColor = UIColor.grayColor()
self.scrollViewBase.addSubview(leftView)
self.scrollViewBase.addSubview(rightView)
self.callViewMethod()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func callViewMethod() {
var yFloatLeft : CGFloat! = 5
var yFloatRight : CGFloat! = 5
wholeYLeft = 0
wholeYRight = 0
for var i = 0; i < myArrayOfDict.count; i++ {
let isCheckImage = myArrayOfDict[i].valueForKey("Image") as! String
let isCheckVideo = myArrayOfDict[i].valueForKey("video") as! String
let str = myArrayOfDict[i].valueForKey("Text") as? String
let boundingRectHeight = str!.boundingRectWithSize(CGSizeMake(self.leftView.frame.width-10, CGFloat.max),
options:NSStringDrawingOptions.UsesLineFragmentOrigin,
attributes: [NSFontAttributeName: UIFont(name: "Arial", size: 14.0)!], context:nil).size.height + 60.0
if(i%2 == 0) {
let firstView = UIView()
print(yFloatLeft)
if(isCheckImage == "") {
firstView.frame = CGRectMake(5, yFloatLeft, self.leftView.frame.width-10, 30 + boundingRectHeight)
} else {
firstView.frame = CGRectMake(5, yFloatLeft, self.leftView.frame.width-10, 180 + boundingRectHeight)
}
// firstView.backgroundColor = UIColor.redColor()
firstView.layer.borderWidth = 2.0
firstView.layer.borderColor = UIColor.lightGrayColor().CGColor
leftView.addSubview(firstView)
let lblTitle = UILabel()
lblTitle.frame = CGRectMake(0, 0, self.leftView.frame.width-10, 30)
lblTitle.textAlignment = NSTextAlignment.Center
lblTitle.text = myArrayOfDict[i].valueForKey("Title") as? String
let lblText = lblInset()
lblText.frame = CGRectMake(0, 30, self.leftView.frame.width-10, boundingRectHeight)
lblText.text = myArrayOfDict[i].valueForKey("Text") as? String
lblText.numberOfLines = 0
lblText.lineBreakMode = .ByWordWrapping
lblText.font = UIFont(name: "Arial", size: 16)
lblText.textAlignment = NSTextAlignment.Justified
let mainImageView = UIImageView()
if(isCheckImage == "") {
mainImageView.hidden = true
yFloatLeft = yFloatLeft + 30 + boundingRectHeight + 10
} else {
mainImageView.hidden = false
mainImageView.frame = CGRectMake(0, 30 + boundingRectHeight, self.leftView.frame.width-10, 150)
mainImageView.image = UIImage(named: (myArrayOfDict[i].valueForKey("Image") as? String)!)
if(isCheckVideo == "") {
btnPlay.hidden = true
} else {
btnPlay.hidden = false
btnPlay.frame = CGRectMake((mainImageView.frame.width/2)-10, (mainImageView.frame.height/2)-10, 30, 30)
btnPlay.backgroundColor = UIColor.blackColor()
btnPlay.userInteractionEnabled = true
btnPlay.addTarget(self, action: "buttonAction:", forControlEvents: .TouchUpInside)
btnPlay.setImage(UIImage(named: "Play"), forState: .Normal)
mainImageView.addSubview(btnPlay)
}
yFloatLeft = yFloatLeft + 30 + boundingRectHeight + 160
}
firstView.addSubview(lblTitle)
firstView.addSubview(lblText)
firstView.addSubview(mainImageView)
firstView.bringSubviewToFront(btnPlay)
} else {
let secondView = UIView()
if(isCheckImage == "") {
secondView.frame = CGRectMake(5, yFloatRight, self.rightView.frame.width-10, 30 + boundingRectHeight)
} else {
secondView.frame = CGRectMake(5, yFloatRight, self.rightView.frame.width-10, 180 + boundingRectHeight)
}
// secondView.backgroundColor = UIColor.purpleColor()
secondView.layer.borderWidth = 2.0
secondView.layer.borderColor = UIColor.lightGrayColor().CGColor
rightView.addSubview(secondView)
let lblTitle = UILabel()
lblTitle.frame = CGRectMake(0, 0, self.leftView.frame.width-10, 30)
lblTitle.textAlignment = NSTextAlignment.Center
lblTitle.text = myArrayOfDict[i].valueForKey("Title") as? String
let lblText = lblInset()
lblText.frame = CGRectMake(0, 30, self.leftView.frame.width-10, boundingRectHeight)
lblText.text = myArrayOfDict[i].valueForKey("Text") as? String
lblText.numberOfLines = 0
lblText.lineBreakMode = .ByWordWrapping
lblText.font = UIFont(name: "Arial", size: 16)
lblText.textAlignment = NSTextAlignment.Justified
let mainImageView = UIImageView()
if(isCheckImage == "") {
mainImageView.hidden = true
yFloatRight = yFloatRight + 30 + boundingRectHeight + 10
} else {
mainImageView.hidden = false
mainImageView.frame = CGRectMake(0, 30 + boundingRectHeight, self.leftView.frame.width-10, 150)
mainImageView.image = UIImage(named: (myArrayOfDict[i].valueForKey("Image") as? String)!)
if(isCheckVideo == "") {
btnPlay.hidden = true
} else {
btnPlay.hidden = false
btnPlay.frame = CGRectMake((mainImageView.frame.width/2)-10, (mainImageView.frame.height/2)-10, 30, 30)
btnPlay.userInteractionEnabled = true
btnPlay.backgroundColor = UIColor.blackColor()
btnPlay.setImage(UIImage(named: "Play"), forState: .Normal)
btnPlay.addTarget(self, action: Selector("buttonAction:"), forControlEvents: .TouchUpInside)
mainImageView.addSubview(btnPlay)
}
yFloatRight = yFloatRight + 30 + boundingRectHeight + 160
}
secondView.addSubview(lblTitle)
secondView.addSubview(lblText)
secondView.addSubview(mainImageView)
secondView.bringSubviewToFront(btnPlay)
}
wholeYLeft = yFloatLeft
wholeYRight = yFloatRight
}
print(wholeYLeft)
print(wholeYRight)
leftView.frame = CGRectMake(0, 0, self.view.frame.width/2, wholeYLeft)
rightView.frame = CGRectMake(self.view.frame.width/2, 0, self.view.frame.width/2, wholeYRight)
if(wholeYRight > wholeYLeft) {
self.scrollViewBase.contentSize = CGSize(width:self.view.frame.width, height: wholeYRight)
} else {
self.scrollViewBase.contentSize = CGSize(width:self.view.frame.width, height: wholeYLeft)
}
}
func buttonAction(sender:UIButton!) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewControllerWithIdentifier("PlayViewController") as! PlayViewController
controller.lblTitle.text = myArrayOfDict[5].valueForKey("Title") as? String
controller.lblComments.text = myArrayOfDict[5].valueForKey("Text") as? String
self.presentViewController(controller, animated: true, completion: nil)
}
}
Ich mache etwas ähnliches. Was ist lblInset in deinem Code? – nadi9
seine benutzerdefinierte Klasse für 'UILabel' –
groß. Vielen Dank für Ihre Hilfe – nadi9