小编jbr*_*nan的帖子

定位MKMapView以一次显示多个注释

我有几个注释想要添加到我的MKMapView(它可以是0-n项,其中n通常是5左右).我可以添加注释,但我想调整地图大小以适应屏幕上的所有注释,我不知道如何做到这一点.

我一直在看,-regionThatFits:但我不太清楚如何处理它.我会发布一些代码来展示我到目前为止所拥有的内容.我认为这应该是一个通常很简单的任务,但到目前为止我对MapKit感到有些不知所措.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

location = newLocation.coordinate;
//One location is obtained.. just zoom to that location

MKCoordinateRegion region;
region.center = location;

//Set Zoom level using Span
MKCoordinateSpan span;
span.latitudeDelta = 0.015;
span.longitudeDelta = 0.015;
region.span = span;
// Set the region here... but I want this to be a dynamic size
// Obviously this should be set after I've added my annotations
[mapView setRegion:region animated:YES];

// Test data, using these as annotations for …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c mapkit ios

91
推荐指数
11
解决办法
8万
查看次数

cell.detailTextLabel.text不工作......为什么

使用以下代码我得到text.label但不是detailTextLabel.text.NSLog正确显示.

cell.textLabel.text = [eventLabels objectAtIndex:indexPath.row];  
cell.detailTextLabel.text = [eventFields objectAtIndex:indexPath.row]];  

NSLog(@"%@", [eventFields objectAtIndex:indexPath.row]);  
Run Code Online (Sandbox Code Playgroud)

我也试过......

cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", [eventFields objectAtIndex:indexPath.row]];     
Run Code Online (Sandbox Code Playgroud)

我之前没有遇到任何问题.有什么建议?

约翰

iphone xcode uitableview

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

在Mac OS X上进行进程间通信的最佳方法

我正在寻找在Mac上构建一个带有后端守护程序进程的Cocoa应用程序(可能只是一个大多数无头的Cocoa应用程序),以及在本地运行的0个或更多"客户端"应用程序(尽管我可能会这样做)也支持远程客户端;远程客户端只能是其他Mac或iPhone OS设备).

传递的数据将是相当简单的,大多数只是文本和命令(我猜想无论如何都可以表示为文本),也可能是偶尔的小文件(可能是图像).

我已经看了几个方法,但是我不确定哪个方法对于手头的任务来说"最好".我考虑过的事情:

  • 读取和写入文件(...是),非常基本但不是很可扩展.
  • 纯套接字(我没有套接字的经验,但我似乎认为我可以使用它们在本地和网络上发送数据.虽然在Cocoa中做一切似乎很麻烦
  • 分布式对象:对于像这样的任务来说似乎相当不优雅
  • NSConnection:我无法弄清楚这个类甚至做了什么,但我已经在一些IPC搜索结果中读到了它

我确信有些东西我不见了,但我很惊讶地发现这个话题缺乏资源.

sockets networking cocoa ipc nsconnection

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

NSViewController和Nib的多个子视图

我很难用Interface Builder和NSViewController来加载视图.

我的目标是拥有一个符合以下描述的视图:顶部的顶部栏(如工具栏但不完全)跨越整个视图宽度,下面是第二个"内容视图".该复合视图由我的NSViewController子类拥有.

为此使用Interface Builder是有意义的.我创建了一个视图笔尖,并在其中添加了两个子视图,将它们正确放置(使用顶部栏和内容视图).我已经准备File's OwnerMyViewController,并连接插座等.

我希望加载的视图(条形图和内容)也在它们自己的笔尖中(这可能是让我沮丧的),并且这些笔尖将其自定义类设置为适用的相应NSView子类.我不确定要设置什么File's Owner(我猜MyController它应该是他们的主人).

唉,当我初始化一个MyViewController实际上没有我的笔尖的实例时.我已经正确地将它添加到我的Window的contentView(我已经检查过了),实际上,有些东西是加载的.也就是说,awakeFromNib会被发送到条形图,但它不会显示在窗口中.我想我肯定有一些电线穿过某处.也许有人可以帮助减轻我的一些挫败感?

编辑一些代码来显示我正在做的事情

当应用程序完成启动时,从应用程序委托中加载控制器:

MyController *controller = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
[window setContentView:[controller view]];
Run Code Online (Sandbox Code Playgroud)

然后在我的initWithNibName中,我现在不做任何事情,而是打电话给super.

cocoa interface-builder nib nsviewcontroller

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

在iOS 3.2(iPad)中正确显示和关闭全屏MPMoviePlayerController

我在iPad应用程序中显示全屏电影时遇到了很多麻烦,然后允许用户使用完成按钮或播放器控件上的"取消全屏"按钮来解除它.

最初我MPMoviePlayerViewController用于电影演示,但我没有从其MPMoviePlayerController对象接收进入/退出全屏通知,所以我自己切换到了.

我可以让电影看起来是全屏的(尽管过渡很简陋)但是当按下"完成"或"非全屏"按钮时,播放器不会采取任何动作.我在下面发布了我的代码:

- (void)startPlayingMovieWithURLString:(NSString *)movieURLString {
    // I get all of these callbacks **EXCEPT** the "willExitFullScreen:" callback.
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullScreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willExitFullScreen:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishPlayback:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

    [self.moviePlayerController setContentURL:someExistingURL];

        // "self" is a UIViewController subclass, and is presented as a "fullscreen" modal view controller from its parent
        // I'm setting the movie player's view's frame to take up the full rectangle of my view controller, but really …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch mpmovieplayercontroller ipad ios

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

UIScreen applicationFrame在横向应用程序启动时返回不正确的矩形(iPhone/iPad)

在横向模式下启动时,无法为我的iPad应用程序获取正确的界限.我在Info.plist文件中设置了正确的键,我的视图控制器在横向(和纵向,自然)中正确启动.

在我的applicationDidFinishLaunching:方法中,我在3秒延迟后调用选择器,并且该方法调用[[UIScreen mainScreen] applicationFrame],但它返回一个纵向框架(即高度>宽度).

有谁知道如何解决这一问题?它闻起来像是一个臭虫(如果是这样我将提交雷达),但如果它是预期的行为,它在哪里记录?

iphone cocoa-touch uikit ipad device-orientation

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

为什么超级和子级逆转?

在集合论中,如果集合包含原始集合中的所有内容并且可能更多,则集合是超集.但是,子集不包含初始集的所有内容.

考虑到这一点,在大多数面向对象的编程语言中(我正在考虑Objective-C,但我知道Java和其他人也是如此),父类称为super类,任何继承自super的类都是叫做subclass.

这不是倒退吗?子类从其超类继承所有实例变量和方法之类的东西,因此它"包含"来自父类的所有内容,以及子类中添加的任何内容.这只是一个命名错误,还是故意的?如果是这样,为什么呢?

language-agnostic oop programming-languages

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

使用jQuery将POST主体设置为JSON对象

我正在尝试在Sinatra应用程序中编写基于JSON的Web API.我想POST一个JSON对象作为帖子正文(具有正确的内容类型集),但我正在努力.

在Cocoa中,我会做类似的事情

[mutableHTTPRequest setHTTPBody:dataRepresentationOfJSONObject];
Run Code Online (Sandbox Code Playgroud)

然后,设置为JSON的内容类型将HTTP主体作为JSON对象发布.我试图用jquery做这个.到目前为止,我能做的最好只是将JSON对象转换为正常的样式key=value&…样式的帖子,这不是我想要的.

我的Javascript:

var data = { "user" : "me!" };
$.ajax({
    type: "POST",
    url: "/api/user/create",
    contentType: 'application/json',
    data: data,
    success: function(r) {

});
Run Code Online (Sandbox Code Playgroud)

有关如何做到这一点的任何指示?我的目标是让我的Sinatra像下面这样做

post "/api/user/create" do
    js = JSON.parse(request.body.read)
    # do something with the js object… this works when POSTing from Cocoa
end
Run Code Online (Sandbox Code Playgroud)

javascript jquery json

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

启用页面并更改设备旋转/方向的UIScrollView(MADNESS)

我很难做到这一点.

我有一个UIScrollView,启用了分页.它由视图控制器(MainViewController)管理,每个页面由PageViewController管理,其视图作为scrollView的子视图添加到适当的偏移量.滚动是左右,适用于标准方向的iPhone应用程序.效果很好.基本上就像Apple提供的样本一样,也像iPhone提供的Weather应用程序一样.

但是,当我试图支持其他方向时,事情并不能很好地发挥作用.我用这种方法支持MainViewController和PageViewController中的每个方向:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     return YES;
}
Run Code Online (Sandbox Code Playgroud)

然而,当我旋转设备时,我的页面变得非常歪斜,并且有很多绘图故障,特别是如果只加载了一些页面,然后我旋转,然后滚动更多等等...非常凌乱.

我告诉我的观点是支持自动调整大小

 theView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
Run Code Online (Sandbox Code Playgroud)

但无济于事.它似乎只会拉伸和歪曲我的观点.

在我的MainViewController中,我添加了这一行,试图调整我所有页面的视图:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * ([self.viewControllers count]), self.scrollView.frame.size.height);

    for (int i = 0; i < [self.viewControllers count]; i++) {
        PageViewController *controller = [self.viewControllers objectAtIndex:i];
        if ((NSNull *)controller == [NSNull null])
            continue;

        NSLog(@"Changing frame: %d", i);
        CGRect frame = self.scrollView.frame;
        frame.origin.x = frame.size.width * i;
        frame.origin.y = 0;
        controller.view.frame = frame;
    }
}
Run Code Online (Sandbox Code Playgroud)

但它没有太多帮助(因为我懒得加载视图,所以当执行时不一定都会加载它们).

有什么方法可以解决这个问题吗?

cocoa-touch objective-c uiscrollview uiinterfaceorientation ios

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

Swift应用程序:导入静态库的框架时"缺少必需的模块"

这是我的设置:

  1. Objective C代码的静态库叫Stat.
  2. 一个Swift框架,它Stat在自己的类中使用代码(这个框架被调用Dyn).静态库和这个框架在同一个Xcode项目中.
  3. 将上述项目作为子项目并链接到的Mac应用程序/项目Dyn.

在我的应用程序中,我有以下代码:

import Cocoa
import Dyn
...
SomeDynClass().doSomething()
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译时,我得到一个错误import Dyn.错误是

error: missing required module ‘Stat'
Run Code Online (Sandbox Code Playgroud)

看来我的应用程序可以很好地找到我的框架,但它也需要为我的静态库找到一个模块呢?

Stat 有一个非常基本的模块文件:

module Stat {
    header "Stat.h"
    export *
}
Run Code Online (Sandbox Code Playgroud)

我想我需要指出我的Mac应用程序的框架搜索路径,Stat但我不知道为什么,我不知道如何.我该如何解决这个问题?

macos cocoa frameworks swift

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