我正在尝试一些非常简单的事情,但不知怎的,我无法让它发挥作用.我尝试做的就是使用UISegmentedControl在2个视图控制器之间切换,例如你可以在Highlights选项卡的App Store应用程序中看到它.
我正在使用iOS5和Storyboard.
这是我的Storyboad阵容:
所以我有一个根视图控制器和两个UITableViews - 这2个我想切换的TableViews.
这是实现文件的样子
#import "SegmentedLocationViewController.h"
#import "PastEventsLocationViewController.h"
#import "FutureEventsLocationViewController.h"
@interface SegmentedLocationViewController()
@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControl;
@property (strong, nonatomic) NSArray *viewControllers;
@end
@implementation SegmentedLocationViewController
@synthesize segmentedControl = _segmentedControl;
@synthesize viewControllers = _viewControllers;
- (IBAction)indexDidChangeForSegmentedControl:(UISegmentedControl*)segmentedControl
{
NSLog(@"index: %d", segmentedControl.selectedSegmentIndex);
}
- (void)setupViewControllers
{
PastEventsLocationViewController *pastEventsLocationViewController = [[PastEventsLocationViewController alloc] initWithStyle:UITableViewStylePlain];
FutureEventsLocationViewController *futureEventsLocationViewController = [[FutureEventsLocationViewController alloc] initWithStyle:UITableViewStylePlain];
self.viewControllers = [NSArray arrayWithObjects:pastEventsLocationViewController, futureEventsLocationViewController, nil];
}
- (void)setupUI
{
[self.segmentedControl addTarget:self action:@selector(indexDidChangeForSegmentedControl:) forControlEvents:UIControlEventValueChanged];
}
// Implement viewDidLoad to do …
Run Code Online (Sandbox Code Playgroud) 我只想在设置文件中输出我的ios应用程序的版本号.
我知道我必须将设置文件添加到应用程序文件夹中.
当我构建并运行时,我可以看到标准设置包附带的4个设置.
为了获得一个简单的只读字符串,我将第二个值更改为以下值
在代码(didFinishLaunchingWithOptions :)中,我调用以下内容:
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
[[NSUserDefaults standardUserDefaults] setValue:version forKey:@"version_number"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,没有任何事情发生.我只看到Group元素和toogle开关和滑块但没有标题行.谁知道我错过了什么?
非常感谢你!
我创建了一个协议并将其分配给委托对象
@protocol AppBrainDelegate <NSObject>
@optional
- (void)didLocateUser;
- (void)didFinishLoadingDataWithData:(NSDictionary *)fetchedData;
@end
@interface Brain : NSObject
@property (strong, nonatomic) id <AppBrainDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)
我认为协议声明中@optional的含义意味着,如果控制器不想要,则控制器不必监听委托方法.
如果没有在控制器中实现第一个委托方法,那么这是崩溃日志.如果我这样做,我不会崩溃.好像我不明白将委托方法声明为可选的概念.你能解释一下我的错误在哪里吗?
*由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [EventViewController didLocateUser]:无法识别的选择器发送到实例0x1fb300'
亲爱的开发者,
我正在努力寻找一个解决我的问题的方法来重新定位CLLocationManager.
我在我的应用程序中使用CLLocationManager实例.如果用户选择设备上的主页按钮或终止应用程序,我希望停止位置服务.
因此我打电话[self.locationManager stopUpdatingLocation];
- 但这不知何故不起作用.应用程序进入后台,状态栏右上角的小位置箭头不会消失.即使我添加[self.locationManager release]
或self.locationManager.delegate = nil;
- 位置跟踪不会停止: - /
如果我转到我的设备设置并关闭应用程序的位置服务,它只会消失.每当我切换回位置服务时,我立即在开关切换旁边看到一个紫色箭头,图标会再次出现在状态栏中.
我的问题是,当应用程序进入后台或终止时,如何关闭位置服务?
非常感谢提前度过了美好的一天:-)
当应用程序进入后台时播放音频流时遇到麻烦.
我使用代码启动流:
NSURL *mediaURL = [NSURL URLWithString:@"http://url.to.my.stream"];
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:mediaURL];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
[mp setControlStyle:MPMovieControlStyleFullscreen];
[mp setMovieSourceType:MPMovieSourceTypeStreaming];
[mp setFullscreen:YES];
[self.view addSubview:[mp view]];
[mp prepareToPlay];
[mp play];
Run Code Online (Sandbox Code Playgroud)
它完美无缺.但是,当应用程序进入后台时,我在属性列表中设置了"App播放音频"标记,然后流停止播放.
如何让我的应用程序在后台播放音频流?
致以最诚挚的问候和感谢!
我无法理解PHP中序列化/反序列化的概念.
假设我有一个非常简单的PHP对象(类someObject),并且在设置该对象的属性之后我想序列化它:
所以我打电话给:serialize($someObject)
;
我想通过html表单将此序列化对象转移到另一个php skript中,因此我将其设置为隐藏值:
<input type="hidden" name="someObject" value="<? print $someObject; ?>"
Run Code Online (Sandbox Code Playgroud)
在下一个PHP脚本中,我想使用unserialize来获取我的对象并将其传递给数据库.
$unserialize = unserialize($_POST['someObject'])
Run Code Online (Sandbox Code Playgroud)
但这总是返回BOOL(假) - 所以我在这里缺少什么?
谢谢你的帮助!
我目前正在ReactiveCocoa中迈出第一步,并且我经历了一些陡峭的学习曲线来理解这些原理.
无论如何这里是我已经提出的.
我将NSArray属性绑定到RACSignal,以便能够通过网络对传入的JSON数据做出反应.
- (void)updateRandomUserData
{
@weakify(self);
RAC(self, users) = [[self fetchRandomUserData] doNext:^(NSDictionary *json){
@strongify(self);
NSMutableArray *randomUsers = [NSMutableArray array];
for (NSDictionary *dict in json[@"data"]) {
BKRandomUser *randomUser = [MTLJSONAdapter modelOfClass:[BKRandomUser class] fromJSONDictionary:dict error:nil];
[randomUsers addObject:randomUser];
}
self.users = randomUsers;
}];
}
Run Code Online (Sandbox Code Playgroud)
信号创建如下所示:
- (RACSignal *)fetchRandomUserData
{
return [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
[subscriber sendNext:JSON];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON, NSError …
Run Code Online (Sandbox Code Playgroud)