相关疑难解决方法(0)

在Swift中从nib加载UIView

这是我的Objective-C代码,我用它来为我的自定义加载一个笔尖UIView:

-(id)init{

    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"myXib" owner:self options:nil];
    return [subviewArray objectAtIndex:0];

}
Run Code Online (Sandbox Code Playgroud)

Swift中的等效代码是什么?

xib uiview swift

140
推荐指数
16
解决办法
17万
查看次数

将xib分配给Swift中的UIView

在目标c中,它可以在init方法中完成

-(id)init{
    self = [[[NSBundle mainBundle] loadNibNamed:@"ViewBtnWishList" owner:0 options:nil]     objectAtIndex:0];
return self;
}
Run Code Online (Sandbox Code Playgroud)

但是当我快速地这样做时

init(frame: CGRect) {
    self = NSBundle.mainBundle().loadNibNamed("ViewDetailMenu", owner: 0, options: nil)[0] as? UIView
}
Run Code Online (Sandbox Code Playgroud)

无法在方法中分配给self自己显示错误.现在我的方法是创建一个视图,并将从nib加载的视图添加到它.谁都有更好的主意?

xib uiview swift

58
推荐指数
4
解决办法
6万
查看次数

Google地图的自定义信息窗口

我想为Google Maps for iOS制作一个自定义信息窗口,如下图所示.是否有可能像GMSMarker,GMSPolyline和GMSPolygon那样扩展GMSOverlay以创建自定义图形?

在此输入图像描述

google-maps-sdk-ios

54
推荐指数
2
解决办法
4万
查看次数

Swift正确加载xib文件的方法

我在swift项目中加载xib文件有一些奇怪的问题.这太令人沮丧,因为我已经知道如何在Obj-C中做到这一点.但是因为swift很快,所以你不能像你那样做..:/

所以我创建了IconTextFiled.xib和IconTextField.swift.(扩展UITextField)在xib中我在Idenity检查器中填充字段Class,在故事板中我对一些textFields执行相同操作.所以我们很高兴只需从xib添加加载到init方法?没有.

在objc我会这样做

- (instancetype)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    if (self) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"IconTextField" owner:self options:nil];
        self = [nib objectAtIndex:0];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

所以我想如果我翻译成swift就会很好.

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    let nib:NSArray = NSBundle.mainBundle().loadNibNamed("IconTextField", owner: self, options: nil)
    self = nib.objectAtIndex(0)
}
Run Code Online (Sandbox Code Playgroud)

但那不起作用.我不知道为什么,但它试图创建更多的对象和崩溃

最后我发现了扩展

extension IconTextField {
    class func loadFromNibNamed(nibNamed: String, bundle : NSBundle? = nil) -> IconTextField? {
        return UINib(
            nibName: nibNamed,
            bundle: bundle
            ).instantiateWithOwner(nil, options: nil)[0] as? IconTextField
    }
} …
Run Code Online (Sandbox Code Playgroud)

interface-builder xib ios swift

14
推荐指数
2
解决办法
3万
查看次数

Swift:创建一个调用另一个class1中的方法的按钮

我有2个类,第一个类名为"store",我在其中创建一个调用方法的按钮:"storeSelected"位于第二个类中,名称为ExploreViewController.
该方法应该打印"完成"并带我到另一个视图控制器.如果没有segue,则会打印"done",但是当放置segue代码时,app会崩溃.

错误是:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<Glam.ExploreViewController: 0x14ed3be20>) has no segue with identifier 'ok'' .........

// ExploreViewController Class

let _sharedMonitor: ExploreViewController = { ExploreViewController() }()

class ExploreViewController: UIViewController, UIScrollViewDelegate {

    class func sharedMonitor() -> ExploreViewController {
        return _sharedMonitor
    }


    func storeSelected(sender: UIButton) {                        
        println("done") // it entered here and "done" is printed                                                                   
        self.performSegueWithIdentifier("ok", sender: self) //here is the problem                           
    }
}







// another class named "Store"  
// button is created …
Run Code Online (Sandbox Code Playgroud)

objective-c ios segue swift ios8

5
推荐指数
1
解决办法
1万
查看次数

使用分段控制更改视图

我需要使用分段控件来更改视图.在以下示例中,我将两个视图容器放在同一位置:

在此输入图像描述

第二个容器是隐藏的,每次我使用分段控件时我都会通过代码显示它.(虽然它也没有显示出来.)

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var container1: UIView!
    @IBOutlet weak var container2: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func showComponent(_ sender: Any) {
        if (sender as AnyObject).selectedSegmentIndex == 0 {
            UIView.animate(withDuration: 0.5, animations: {
                self.container1.alpha = 1
                self.container2.alpha = 0
            })
        } else {
            UIView.animate(withDuration: 0.5, animations: {
                self.container1.alpha = 0
                self.container2.alpha = 1
            })
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

你知道其他任何方法吗?

有没有办法自定义SegmentedControl,好像它是一个TAB?

ios swift swift4 ios11 xcode9

0
推荐指数
1
解决办法
4583
查看次数