我正在socket.io我的swift ios应用程序中实现.
目前在几个面板上我正在监听服务器并等待收到的消息.我这样做是通过调用getChatMessage每个面板中的函数来实现的:
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
Run Code Online (Sandbox Code Playgroud)
但是我注意到这是一个错误的方法,我需要更改它 - 现在我想开始只收听一次传入消息,当任何消息到来时 - 将此消息传递给任何监听它的面板.
所以我想通过NSNotificationCenter传递传入的消息.到目前为止,我能够传递发生的事情的信息,但不能传递数据本身.我是这样做的:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
Run Code Online (Sandbox Code Playgroud)
然后我有一个叫做的函数:
func showSpinningWheel(notification: NSNotification) {
}
Run Code Online (Sandbox Code Playgroud)
任何时候我想打电话给我:
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
Run Code Online (Sandbox Code Playgroud)
那么如何传递对象messageInfo并将其包含在被调用的函数中?
UIDevice.orientationinclude UIDeviceOrientationFaceUp和 的可能值UIDeviceOrientationFaceDown.虽然知道设备是扁平的可能是有用的,但这并不能告诉我们它是否是平面显示面向纵向或横向模式的界面.有没有办法在设备返回模糊信息的情况下找到GUI的当前方向?我想我可以跟踪方向变化事件以记住最后的纵向/横向方向或检查主要UIView的边界高度和宽度,但这似乎是kludgey.设备或UIView上有一个我失踪的财产吗?
我需要设置translatesAutoresizingMaskIntoConstraints为NO.默认情况下,它设置为YES(以协助大多数从struts和spring转换到新的Auto Layout的应用程序).
Xcode中有哪些地方可以将默认值更改YES为NO?
或者我是否必须为每个视图手动设置它?
我正在寻找一种有效的方法来使用新的uipopoverpresentationcontroller重新定位一个popover.我已经成功地呈现了弹出窗口,现在我想移动它而不会解散并再次呈现.我在使用该功能时遇到问题:
(void)popoverPresentationController:(UIPopoverPresentationController *)popoverPresentationController
willRepositionPopoverToRect:(inout CGRect *)rect
inView:(inout UIView **)view
Run Code Online (Sandbox Code Playgroud)
我知道这是游戏的早期,但任何人都有一个如何有效地做到这一点的例子,如果你和我分享,我将不胜感激.提前致谢.
我试图用prepareForSegue()将对象传递给另一个场景
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using [segue destinationViewController].
var nextScene = segue.destinationViewController as! VehicleDetailsTableViewController
// Pass the selected object to the new view controller.
if let indexPath = self.tableView.indexPathForSelectedRow() {
let selectedVehicle = vehicles[indexPath.row]
nextScene.currentVehicle = selectedVehicle
}
}
Run Code Online (Sandbox Code Playgroud)
而且我有currentVehicle对象来捕获这些对象.但是,当我尝试运行时,它会破坏并获得有关向下转换的错误.
错误编辑
无法将"XXX.DisplayViewController"类型的值(0x1082dcd80)转换为"XXX.VehicleDetailsTableViewController"(0x1082dc9a0).(LLDB)
在我的iOS应用程序中,我有一个计时器启动,当它启动时,我需要能够检测是否有一个Alert(UIAlertView)或一个Action Sheet(UIActionSheet)打开.
一种方法是修改显示警报/操作表的代码 - 但不幸的是,这不是我的选择.
所以,问题是 - 有没有办法知道/检测警报或行动表是否已被打开?
是否有任何通知在打开时发送,或者任何遍历视图层次结构以检测它?
谢谢
Objective-C运行时如何处理weak在类中定义的属性,但类上的私有类定义了与其名称和类型相同的属性strong?
在类别上下文中运行的代码是使用原始(弱)修饰符,还是会使用类别定义修饰符(强)?
例如:
Name.m
@property (weak, nonatomic) NSString *name;
Run Code Online (Sandbox Code Playgroud)
NameTests.m
@interface Name (Test)
@property (strong, nonatomic) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我需要类似粒子系统的东西,所以我做了以下事情:
在应用程序初始化时,我加载了一个UIImage
laserImage = [UIImage imageNamed:@"laser.png"];
Run Code Online (Sandbox Code Playgroud)
UIImage*laserImage在我的控制器的接口中声明.现在每当我需要一个新粒子时,这个代码就会产生一个:
// add new Laserimage
UIImageView *newLaser = [[UIImageView alloc] initWithImage:laserImage];
[newLaser setTag:[model.lasers count]-9];
[newLaser setBounds:CGRectMake(0, 0, 17, 1)];
[newLaser setOpaque:YES];
[self.view addSubview:newLaser];
[newLaser release];
Run Code Online (Sandbox Code Playgroud)
请注意,图像只有17px*1px小而model.lasers是一个内部数组,用于完成从图形输出分离的所有计算.所以在我的主绘图循环中,我将所有UIImageView的位置设置为我的model.lasers数组中的计算位置:
for (int i = 0; i < [model.lasers count]; i++) {
[[self.view viewWithTag:i+10] setCenter:[[model.lasers objectAtIndex:i] pos]];
}
Run Code Online (Sandbox Code Playgroud)
我将标记增加10,因为默认值为0,我不想使用默认标记移动所有视图.
因此动画看起来很好,大约有10到20张图像,但在处理大约60张图像时确实很慢.所以我的问题是:有没有办法优化这一点而无需在OpenGl ES中重新开始?
我曾经使用repo中文件选项卡上的下载/添加下载...按钮上传二进制文件.这个功能似乎消失了.有人知道为什么吗?临时Github问题/浏览器问题/ ...?
我有一个表视图,其中包含通过同一xib中的接口构建器创建的表头视图.我想根据屏幕大小设置标题的高度,例如屏幕高度的50%.
这是我在iPhone 4s上获得的静态高度:
这就是我在iPhone 6上得到的:

请注意,标头的内容是静态的.
我无法使用自动布局设置标题的约束.我试图根据表视图的高度设置高度约束,但在界面构建器中似乎不可能.控制拖动不起作用.我无法将标题从标题拖到表格视图甚至标题本身.

如何根据屏幕尺寸设置标题的高度?
ios ×4
iphone ×3
objective-c ×3
autolayout ×2
swift ×2
xcode ×2
cocoa-touch ×1
github ×1
ios6 ×1
ios8 ×1
performance ×1
popover ×1
storyboard ×1
swift3 ×1
uialertview ×1
uiimageview ×1
uistoryboard ×1
uitableview ×1
xcode4.5 ×1