Shai UI
Shai UI

Reputation: 51898

How to add a UIButton to Swift Playground?

So I opened up playground, I just want to add a simple UIButton (or a simple UIView) for testing purposes. I can't get it to display though. This is what I have so far:

import UIKit

var uiButton    = UIButton.buttonWithType(UIButtonType.System) as UIButton
uiButton.frame  = CGRectMake(0, 0, 100, 100)
uiButton.setTitle("Test", forState: UIControlState.Normal);
//self.view.addSubview(uiButton) <-- doesn't work

Do you guys know what I'm doing wrong? Thanks

Upvotes: 4

Views: 7523

Answers (4)

iMRahib
iMRahib

Reputation: 532

I was just doing my sorting programming and pated the code..it will help you to add a button in playgroud with target.

import UIKit
import PlaygroundSupport

let aButton = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
aButton.backgroundColor = .lightGray
aButton.setTitle("Run Sorting", for: .normal)
aButton.layer.cornerRadius = 10
aButton.clipsToBounds = true

class Sorting {
    
    @objc func callSorting() {
        self.getSortedArrayUsingSelectionSort()
    }
    
    func getSortedArrayUsingSelectionSort() {
        
        var arr = [4, 9, 10, 6, 1, 3]
        let n = arr.count
        
        for i in 0..<(n - 1) {
            var minIndex = i
            for j in (i+1)..<n {
                if arr[j] < arr[minIndex] {
                    minIndex = j
                }
            }
            if minIndex != i {
                let temp = arr[minIndex]
                arr[minIndex] = arr[i]
                arr[i] = temp
            }        }
        print(arr)
    }
  }

let target = Sorting()

aButton.addTarget(target, action: #selector(Sorting.callSorting), for: .touchUpInside)
let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
containerView.backgroundColor = .white
PlaygroundPage.current.liveView = containerView

containerView.addSubview(aButton)

Upvotes: 0

Christian McMullin
Christian McMullin

Reputation: 1

import XCPlayground has been deprecated and is now import PlaygroundSupport. You need to create your view first and give it a size.

let view = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 300)) view.backgroundColor = UIColor.black

then add PlaygroundPage.current.liveView = view to be able to see the view in the assistant editor.

now that you have created your view, and you can see the live preview of it. You can now add other views to it. In my playground I added several views so I created simple function with a default width and height.

func addSquareView(x: Int, y: Int, width: Int = 100, height: Int = 100, color: UIColor) { let newView = UIView(frame: CGRect(x: x, y: y, width: width, height: height)) newView.backgroundColor = color view.addSubview(newView) }

addSquareView(x: 100, y: 100, color: .blue)

Now there is a blue square in the center of my view.

Upvotes: 0

user4233369
user4233369

Reputation:

If you import XCPlayground in your playground you can show views using:

let view=UIView()
//other setup
XCPShowView("View Title",view)

This will show the view in the assistant editor

To show the assistant editor goto View > Assistant Editor > Show Assistant Editor

Upvotes: 2

Dharmesh Kheni
Dharmesh Kheni

Reputation: 71854

I think you can add button into playground and your code is correct you can see your button here when you click on Quick Look:

enter image description here

or you can see that button with clicking on Value History:

enter image description here

you dont need to add that into view.

Upvotes: 4

Related Questions