小编And*_*sek的帖子

如何使用Swift 3.0中的NotificationCenter和swift 2.0中的NSNotificationCenter传递数据?

我正在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并将其包含在被调用的函数中?

nsnotifications nsnotificationcenter ios swift swift3

102
推荐指数
4
解决办法
9万
查看次数

如何以编程方式确定iPhone界面方向?

UIDevice.orientationinclude UIDeviceOrientationFaceUp和 的可能值UIDeviceOrientationFaceDown.虽然知道设备是扁平的可能是有用的,但这并不能告诉我们它是否是平面显示面向纵向或横向模式的界面.有没有办法在设备返回模糊信息的情况下找到GUI的当前方向?我想我可以跟踪方向变化事件以记住最后的纵向/横向方向或检查主要UIView的边界高度和宽度,但这似乎是kludgey.设备或UIView上有一个我失踪的财产吗?

iphone cocoa-touch

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

在Xcode 4.5中设置translatesAutoresizingMaskIntoConstraints的位置

我需要设置translatesAutoresizingMaskIntoConstraintsNO.默认情况下,它设置为YES(以协助大多数从struts和spring转换到新的Auto Layout的应用程序).

Xcode中有哪些地方可以将默认值更改YESNO

或者我是否必须为每个视图手动设置它?

xcode ios autolayout ios6 xcode4.5

34
推荐指数
4
解决办法
3万
查看次数

iOS 8 - UIPopoverPresentationController移动弹出窗口

我正在寻找一种有效的方法来使用新的uipopoverpresentationcontroller重新定位一个popover.我已经成功地呈现了弹出窗口,现在我想移动它而不会解散并再次呈现.我在使用该功能时遇到问题:

(void)popoverPresentationController:(UIPopoverPresentationController *)popoverPresentationController
      willRepositionPopoverToRect:(inout CGRect *)rect
                           inView:(inout UIView **)view
Run Code Online (Sandbox Code Playgroud)

我知道这是游戏的早期,但任何人都有一个如何有效地做到这一点的例子,如果你和我分享,我将不胜感激.提前致谢.

popover ios8

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

用prepareForSegue Swift传递对象

我试图用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)

xcode storyboard ios uistoryboard swift

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

iPhone:检测UIAlert/UIActionSheet是否打开

在我的iOS应用程序中,我有一个计时器启动,当它启动时,我需要能够检测是否有一个Alert(UIAlertView)或一个Action Sheet(UIActionSheet)打开.

一种方法是修改显示警报/操作表的代码 - 但不幸的是,这不是我的选择.

所以,问题是 - 有没有办法知道/检测警报或行动表是否已被打开?

是否有任何通知在打开时发送,或者任何遍历视图层次结构以检测它?

谢谢

iphone uialertview uiactionsheet

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

Objective-C属性 - 类别中的强弱声明

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)

objective-c

10
推荐指数
1
解决办法
606
查看次数

如何有效地显示许多图像?(iPhone编程)

在我的应用程序中,我需要类似粒子系统的东西,所以我做了以下事情:

在应用程序初始化时,我加载了一个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中重新开始?

iphone performance objective-c uiimageview

9
推荐指数
1
解决办法
3183
查看次数

Github下载页面/按钮不再可见

我曾经使用repo中文件选项卡上的下载/添加下载...按钮上传二进制文件.这个功能似乎消失了.有人知道为什么吗?临时Github问题/浏览器问题/ ...?

github github-services

9
推荐指数
1
解决办法
4924
查看次数

UITableView:根据屏幕大小设置表格标题视图高度

我有一个表视图,其中包含通过同一xib中的接口构建器创建的表头视图.我想根据屏幕大小设置标题的高度,例如屏幕高度的50%.

这是我在iPhone 4s上获得的静态高度:

iPhone 4s中的Tableview标题

这就是我在iPhone 6上得到的:

iPhone 6中的Tableview标题

请注意,标头的内容是静态的.

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

在此输入图像描述

如何根据屏幕尺寸设置标题的高度?

objective-c uitableview ios autolayout

9
推荐指数
1
解决办法
6123
查看次数