我想我可能已经在iOS4的mapkit API中发现了一个错误,但由于我仍然认为自己是一个新手,我想我会在这里查看是否有人可以指出我可能做错了什么.
我有一个应用程序,我已经工作了几个星期,在其中使用mapview并利用MKUserTrackingButton来切换跟踪模式.在iOS 5上它工作正常但是从升级到6它有奇怪的行为.当你将mapview放入跟踪带有标题的用户之后的跟踪模式时,如果你相对静止,它会很好,但是当你开始在汽车中移动时,每次回到常规跟踪模式时它会以航向模式退出轨道.经过许多令人沮丧的时间试图找出它后,我决定使用最小的mapview制作一个新的简单应用程序并跟踪,看看它是否只是我的编码或可能的错误.新的应用程序做同样的事情.我发布了以下所有代码.希望有人可以帮我告诉我,如果我做错了.
这是app delegate标题
// iTrackerAppDelegate.h
// iTracker
//
// Created by Victor Hudson on 9/22/12.
// Copyright (c) 2012 Victor Hudson. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "TrackerViewController.h"
@interface iTrackerAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) IBOutlet UIWindow *window;
@end
Run Code Online (Sandbox Code Playgroud)
这是app委托实现
//
// iTrackerAppDelegate.m
// iTracker
//
// Created by Victor Hudson on 9/22/12.
// Copyright (c) 2012 Victor Hudson. All rights reserved.
//
#import "iTrackerAppDelegate.h"
@implementation iTrackerAppDelegate
@synthesize window = _window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary …Run Code Online (Sandbox Code Playgroud) 我正在开发适用于iOS的示例地图套件应用程序.我有一切工作和一个工具栏按钮来切换MKUserTrackingMode.这可能看起来像一个愚蠢的问题,但我已经搜索了IB中的所有选项并查看了文档,我找不到任何按钮选项,例如iOS Maps应用程序中使用的当前位置/指南针标题.开发人员可以使用该特定按钮吗?
我正在努力和应用程序从"BNR iOS编程指南"第5章调用whereami.我有应用程序工作,并将其留在我的手机上,以显示我正在学习的妻子和家人.尽管如此,它仍然表现出一种常规的崩溃行为.这是发生了什么....
当你第一次打开应用程序然后运行它就可以了,如果你回家然后在几分钟内再次打开它就可以了,如果你把它留在后台然后重新打开几分钟(比如5个或更多) )后来它崩溃了.然后你可以重新打开它然后它很好,但模式重复.
我已经用书仔细检查了我的所有代码并查看了勘误页面,但无法弄清楚可能出现的问题.Xcode组织者显示所有崩溃的日志,但我不知道如何阅读.我开始怀疑,因为这只是一个学习项目,应用程序,并不意味着真正的使用,也许是失去了一些东西,它使多任务/背景/重启??? 是否正确?我正在使用运行iOS 4.3.4的iPhone 4上的Xcode 4.1.如果有人能提供任何帮助,我将不胜感激.
以下是我认为崩溃日志的相关部分:
Incident Identifier: 352B538C-75BB-4BDF-9C2B-EC9613CE1B44
CrashReporter Key: 5896ed7851b999169919cab30c69940f74ed6b0c
Hardware Model: iPhone3,1
Process: WhereAmI [775]
Path: /var/mobile/Applications/DB57A854-01F8-460F-B8CD-38B8FC50FBAF/WhereAmI.app/WhereAmI
Identifier: WhereAmI
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2011-07-23 18:47:19.093 -0400
OS Version: iPhone OS 4.3.4 (8K2)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x356d8a1c __pthread_kill + 8
1 libsystem_c.dylib 0x34d543b4 pthread_kill …Run Code Online (Sandbox Code Playgroud) 我正在开发一个在detailViewController中呈现一些数据的应用程序.我在导航栏中有一个rightBarButton,它提供了一个UIActivityViewController,它充满了我自己的UIActivity子程序项.它们中的大多数工作正常,因为它们只是从详细视图中将一个小方面改变为数据,但我需要其中一个在选择时打开modalViewController.我一直从控制台收到以下警告......
Warning: Attempt to present <UINavigationController: 0x1fd00590>
on <UITabBarController: 0x1fde1070> which is already presenting <MPActivityViewController: 0x1fd2f970>
Run Code Online (Sandbox Code Playgroud)
我想值得注意的是,应用程序不会崩溃,但模态视图也不会出现.我假设UIActivityViewController本身是一个模态视图,你只能一次显示其中一个,所以任务是弄清楚在ActivityView消失后如何执行我的segue,但那就是我难倒的地方.我欢迎任何帮助,想法或反馈.我已经尝试了谷歌,但没有太多运气,我认为因为UIActivityViewController是如此新.
这是我的设置到目前为止,我的UIActivity对象有一个委托设置到detailViewController的自定义协议,让detailViewController执行数据更改,然后更新其视图.
对于有问题的活动,应该提供modalView控制器,我尝试了一些方法,都得到了相同的警告.
这些都不是!!!
1)只是尝试从我的委托方法执行segue
- (void) activityDidRequestTransactionEdit
{
NSLog(@"activityDidRequestTransactionEdit");
[self performSegueWithIdentifier:@"editTransaction" sender:self];
}
Run Code Online (Sandbox Code Playgroud)
2)尝试在UIActivityViewController上设置一个完成块,并让我的委托方法设置一个bool标志,显示模态视图(self.editor)
[activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed) {
NSLog(@"completed dialog - activity: %@ - finished flag: %d", activityType, completed);
if (completed && self.editor) {
[self performSegueWithIdentifier:@"editTransaction" sender:self];
}
}];
Run Code Online (Sandbox Code Playgroud)
3)继承UIActivityViewController本身,给它作为委托的detailView,并用我自己的完成块覆盖它的dismissViewControllerAnimated:方法
- (void) dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
{
[super dismissViewControllerAnimated:flag completion:^{
[self.MPActivityDelegate activityDidRequestTransactionEdit];
}];
}
Run Code Online (Sandbox Code Playgroud)
工作解决方案
在UIActivity子类中,您需要像这样重写此方法
- (UIViewController *) activityViewController {
MPEditMyDataViewController …Run Code Online (Sandbox Code Playgroud) 我正在学习可编辑的UITableViews编辑,我无法弄清楚为什么我的应用程序在删除其中一个部分的最后一行时崩溃了.我一直在这里和谷歌一起看,它在我看来,我已经做了大多数人说的解决这个问题,但没有运气.我很难过,并感谢所提供的任何帮助.
这是我删除表行的方法
myTableSections是一个NSMutableArray,它包含表示各部分的NSDictionaries - "Possessions"是保存行数组的键,以及部分标题的键"Header"
PossessionStore是一个单例,它在allPossessions数组中保存应用程序的所有Possessions
divideSections的msg是一种将allPossessions排序为NSDictionaries并将其存储到myTableSections中的方法
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{ ////If the table view is asking to commit the delete command
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Get the possesion from the row
Possession *p = [[[myTableSections objectAtIndex:[indexPath section]] objectForKey:@"Possessions"] objectAtIndex:[indexPath row]];
// delete it from the PossessionStore
[[[PossessionStore defaultStore] allPossessions] removeObjectIdenticalTo:p];
// Rebuild myTableViewSections to reflect the data change to the PossessionStore
[self divideSections];
// remove the row from the table view with an animation …Run Code Online (Sandbox Code Playgroud) ios ×3
ios6 ×2
mapkit ×2
mkmapview ×2
crash-log ×1
debugging ×1
ios6-maps ×1
objective-c ×1
uitableview ×1
xcode ×1