或者在源代码中使用了API调用.
(Firefox是一个开源应用程序,但Skype不是.当我查看Firefox的源代码时,我看不到任何nib(xib)文件.)
将我的项目更新到10.7 SDK并切换调试器之后,我得到了以下消息:
Property with 'iboutlet' attribute must be an object type (invalid 'BOOL' (aka 'signed char'))
Run Code Online (Sandbox Code Playgroud)
在更新之前它完全正常工作.任何关于如何解决这个问题的提示?
XIB可以跨平台使用吗?
EG:我正在创建一个通用应用程序.在创建新的XIB时,Xcode希望我选择一个设备系列.
这个UI将在应用程序的两个版本中按原样使用,并且设备系列不是真正相关的(它是200x250像素并且可以在两个屏幕上显示).
如果我为设备系列选择iPad,这是否意味着在iPhone上运行时应用程序将看不到xib?
如果没有,我应该注意到哪些问题?
编辑:特别是在这个答案中,他们暗示设备系列嵌入在NIB本身,可能使其在"错误"平台上不可见:https://stackoverflow.com/a/10459556/1461211
我收到此错误:
'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier NavigationNodeCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
Run Code Online (Sandbox Code Playgroud)
我使用两个具有相同类"NavigationItemCell"和两个标识符"NavigationNodeCell"和"NavigationLinkCell"的单元格.
我创建了一个单元格,例如:
let cell: NavigationItemCell = self.tableView.dequeueReusableCellWithIdentifier("NavigationNodeCell", forIndexPath: indexPath) as! NavigationItemCell
Run Code Online (Sandbox Code Playgroud)
这个问题一直存在于我之前,例如dequeueReusableCellWithIdentifier:forIndexPath中的断言失败:
据我所知(例如Sebastian Borggrewe的anser),它应该足以在故事板中注册UITableViewCell及其自定义类和标识符.
这正是我所做的,我仍然得到这个错误.我试图使用两个不同的类,但它没有解决错误.我也尝试用笔尖注册我的细胞但是我遇到了其他问题(标签是零).
我发现这个问题可能会发生,因为我以编程方式实例化了一个新的表视图控制器.
var newController = MyTableViewController()
Run Code Online (Sandbox Code Playgroud)
这是否意味着我还要注册笔尖?这是一个问题,我必须两次注册同一个班级?我如何避免nil标签的问题?
我已经定制了UITableViewCell(从nib加载的静态内容).这个单元格包含一个UILable,我想在用户点击它时更改其值.(将显示PickerView,并且该用户可以为该标签选择值).
所以我创建了以下IBAction.但是,当我尝试将其与UIlable连接时,它不允许我这样做.
-(IBAction)selectlanguage:(UILabel *)sender
{
/*
Code to display pickerview and select appropriate language
*/
self.languageLable.text=@"Spanish";
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.userTranslationLanuage = @"en|sp";
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我失踪了什么?
萨米特
我通过编辑info.plist文件更改了我的nib文件,并将File的所有者设置为扩展NSViewController的类,但现在它给了我上面的错误:
运行... 2012-04-06 15:11:45.552 Rooster [1251:a0f]无法加载nib文件:RoosterView.xib,退出
Run Code Online (Sandbox Code Playgroud)Debugger stopped. Program exited with status value:1.(gdb)
我该如何解决?
nib文件中顶级对象的加载顺序是随机的还是可以确定的?我认为它会按照我将它们放入Interface Builder中的顺序加载对象.但似乎并非总是如此.
我想创建一个类似于Interface Builder的检查器视图,其中不同的部分具有交替的背景颜色.我计划通过在我的笔尖中将这些部分作为顶级视图进行排序,然后根据加载顺序对它们进行着色.
自从每次创建新的笔尖或故事板后,将xCode更新到最新版本(v.4.5.1)时,它假设默认视图大小为4"(即:反映新的iPhone 5).但是,我正在工作通过许多教程和教科书,因为我正在学习Objective C,他们都使用3.5"视图大小.我知道如何去和改变视图大小回3.5英寸(按我之前交/问题在这里),但我不知道是否有在Xcode的方式每次我创建时间设定3.5作为永久默认视图大小一个新的笔尖/故事板.我环顾四周,没有明显的方法.我真的厌倦了不得不一遍又一遍地将nib/views设置为3.5".
我已经实现了一个自定义的NSView(标记为),并且能够获得mouseUp:,mouseDown:和mouseMoved:events.为此,我有AcceptFirstResponder返回YES,并在awakeFromNib中调用以下内容:
[[self window] makeFirstResponder:self];
[[self window] seAcceptsMouseMovedEvents:true];
Run Code Online (Sandbox Code Playgroud)
然而,非常奇怪的是,如果我单击并拖动,mouseMoved:events将停止进入,直到我松开鼠标按钮并获得mouseUp:
我已经看过其他相关帖子,但是他们都说如果视图是第一响应者(并且它是),那么我应该接收这些事件.
为什么mousemoved:事件停止了?
我正在尝试uitableview使用ECSlidingViewController方法加载.
当我调用此代码时:
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
bundle:nil];
UITableViewController* page = [sb instantiateViewControllerWithIdentifier:@"tableViewPage"];
CGRect frame = self.slidingViewController.topViewController.view.frame;
self.slidingViewController.topViewController = page;
self.slidingViewController.topViewController.view.frame = frame;
[self.slidingViewController resetTopView];
Run Code Online (Sandbox Code Playgroud)
而"tableViewPage"是一个tableView控制器,而不是带有表的视图.它给了我:
[UITableViewController loadView]加载了"Bzc-w8-vsI-view-gnu-XH-Eb0"笔尖,但没有得到UITableView.
我试图制作一个方法topViewController,uitableviewcontroller而不是uiviewcontroller......但我失败了.我错过了什么?