尝试使用以下代码显示模态视图控制器
MapViewController *mapView = [[MapViewController alloc] initWithNibName:@"MapViewController" bundle:nil];
mapView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self.navigationController presentModalViewController:mapView animated:YES];
[mapView release];
Run Code Online (Sandbox Code Playgroud)
继续收到以下错误..
'UIViewControllerHierarchyInconsistency', reason: 'A view can only be associated with at most one view controller at a time! View <UIView: 0x1ed815a0; frame = (0 20; 320 460); autoresize = W+H; layer = <CALayer: 0x1ed81600>> is associated with <UIViewController: 0x1ed835a0>. Clear this association before associating this view with <MapViewController: 0x1dd947c0>.'
Run Code Online (Sandbox Code Playgroud)
这是一个我几个月没碰过的旧项目,想知道什么可能导致这样的错误?
我有一个应用程序,我想支持多个方向.我有两个.xib文件,我想使用myViewController.xib myViewControllerLandscape.xib. myViewController.xib并存在于project/Resources中,myViewControllerLandscape.xib并存在于根项目目录中.
我想要做的是使用单独的NIB (myViewControllerLandscape.xib)进行轮换.我尝试在viewDidLoad like中检测旋转:
if((self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight))
{
NSLog(@"Landscape detected!");
[self initWithNibName:@"myViewControllerLandscape" bundle:nil];
}
Run Code Online (Sandbox Code Playgroud)
但我可以在gdb中看到,当应用程序以横向设备启动时,不会执行此操作.NSLog消息不会触发.为什么是这样?我做错了什么?
此外,如果我initWithNibName在viewDidLoad方法中明确地放置了函数调用,则不会加载该nib,并继续使用myViewController.xib文件.我的电话有什么问题?我应该指定捆绑吗?
谢谢!
我使用Swift创建了一个小样本项目.我创建了一个"MyCustomView"作为xib,其中包含label,button和imageView,如下面的代码所示:
import UIKit
@IBDesignable class MyCustomView: UIView {
@IBOutlet weak var lblName: UILabel!
@IBOutlet weak var btnClick: UIButton!
@IBOutlet weak var myImageView: UIImageView!
var view:UIView!
@IBInspectable
var mytitleLabelText: String? {
get {
return lblName.text
}
set(mytitleLabelText) {
lblName.text = mytitleLabelText
}
}
@IBInspectable
var myCustomImage:UIImage? {
get {
return myImageView.image
}
set(myCustomImage) {
myImageView.image = myCustomImage
}
}
override init(frame : CGRect)
{
super.init(frame: frame)
xibSetup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
xibSetup()
}
func xibSetup()
{
view …Run Code Online (Sandbox Code Playgroud) 当我右键单击.xib时,我看到没有"重复".这样做的方法是:只需要查找器,将文件复制到另一个名称,然后将其拖到我的资源中?这就是我需要做的全部吗?
[注意:只是想知道是否有其他文件或设置我需要打扰.]
我想知道如何在Cocoa Mac Programming中点击按钮打开一个新窗口.帮我.我正在做一个mac应用程序,需要在特定按钮单击时打开一个新的mac窗口.
当我在Xcode 4中双击我的文件StartWindow.xib时,它不会打开到集成的Interface Builder中; 它像XML文件一样打开.我可以打开所有其他xib文件,它们按预期显示.我可以通过"打开方式"使用旧的Interface Builder打开它.
如何使用集成的Interface Builder打开它?
我可以在编程上创建简单的自定义viewForHeaderInSection,如下所示.但是我想要做更复杂的事情,可能是与不同类的连接,并像tableView单元一样到达它们的属性.简单地说,我想看看我做了什么.
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if(section == 0) {
let view = UIView() // The width will be the same as the cell, and the height should be set in tableView:heightForRowAtIndexPath:
let label = UILabel()
let button = UIButton(type: UIButtonType.System)
label.text="My Details"
button.setTitle("Test Title", forState: .Normal)
// button.addTarget(self, action: Selector("visibleRow:"), forControlEvents:.TouchUpInside)
view.addSubview(label)
view.addSubview(button)
label.translatesAutoresizingMaskIntoConstraints = false
button.translatesAutoresizingMaskIntoConstraints = false
let views = ["label": label, "button": button, "view": view]
let horizontallayoutContraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|-10-[label]-60-[button]-10-|", options: .AlignAllCenterY, metrics: …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我目前将所有代码分成静态库,以便更轻松地为实际应用程序和代码的单元测试设置xcode项目目标.这个问题是我想把我的大部分xib文件放在静态库中,但似乎当我运行我的应用程序并尝试引用xib时它无法找到它,除非它包含在实际中应用程序的目标而不是静态库目标.静态库中是否可以包含xib文件和其他资源,这些文件可以被同一个库中的代码引用,如果是,如何?
Xcode允许.xib通过Interface Builder 在文件中创建启动屏幕.是否可以使用xib执行一些代码,就像在通常的视图控制器中一样?如果我们可以在应用程序启动时设置不同的文本/图像/等,那就太棒了.