小编Rob*_*egg的帖子

使用块将数据传递回视图控制器

我在看这个问题.

其中一个答案显示了如何使用块向后传递数据查看prepareForSegue方法.我的理解是这种方法应该用于向前传递数据,而不是向后传递数据.

我想为此目的尝试阻塞 - 将数据传递回另一个viewController.

我的问题是:如何在不使用prepareForSegue方法的情况下执行此操作?我可以在例如UITableView中使用 - didselectRowAtIndexPath并且忽略视图 - 但接收视图如何被"通知"有数据返回,而不使用委托?

iphone objective-c ios objective-c-blocks

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

Firebase运行时崩溃

我已将Firebase SDK手动添加到我的项目中(由于配置问题,无法使用cocoapods).

使用以下框架:

FirebaseCore.framework        
FirebaseInstanceID.framework
Firebasemessageing.framework
Run Code Online (Sandbox Code Playgroud)

AppDelegate我已导入以下内容:

#import "Firebase.h
#import <FirebaseInstanceID/FirebaseInstanceID.h>
#import <FirebaseMessaging/FirebaseMessaging.h>
Run Code Online (Sandbox Code Playgroud)

然后我引用API:

[FIRApp configure];
Run Code Online (Sandbox Code Playgroud)

当我构建项目时,一切都很好.但是,只要应用程序遇到Firebase SDKAPI,我就会遇到以下崩溃:

控制台中的错误消息:

***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'+ [NSData gtm_dataByGzippingData:错误:]:无法识别的选择器发送到类0x10553f168'

我已经添加了我能想到的所有必需的框架,但仍然遇到了这个问题.

xcode ios firebase firebase-cloud-messaging

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

将UIView添加到UIWindow无法正常工作

我想一个添加UIViewUIWindow使用appDelegate我使用这个代码:

NSArray *myViewArray = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];

UIView *myView = myViewArray[0];

UIWindow *window = [[[UIApplication sharedApplication] delegate] window];

myView.frame = CGRectMake(0, 0, 258, 564);
[myView setTag:100];
[window addSubview:myView];
Run Code Online (Sandbox Code Playgroud)

但这不起作用.如果我将它添加到我的self.view工作正常.但是,我希望此视图在出现时显示在所有其他视图上.

我在这做错了什么?

编辑

我使用了上一个SO问题中的代码:如何在UIBarButton项目下添加UIImage

它工作正常,没有问题.

但是在这个只有viewDidLoad方法和一个控制器的新项目中它不起作用.

objective-c uiwindow ios

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

prepareForSegue在viewDidLoad之前调用

我试过安装SO和谷歌,但似乎没有人有这个问题.

ViewControllers我的iOS应用程序中有两个.

viewControllerA点击活动中我打电话:

[self performSegueWithIdentifier:@"fooSegue" sender:self];
Run Code Online (Sandbox Code Playgroud)

这称之为:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
Run Code Online (Sandbox Code Playgroud)

viewControllerA

没问题.

但是那个方法之后,

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
Run Code Online (Sandbox Code Playgroud)

在调用viewControllerBviewDidLoad之前调用.viewController在这个阶段我不需要这个方法.伴随于此,viewDidLoad/ viewWillApear被调用两次后prepareForSegue已呼吁viewControllerB

我试着做一个堆栈strace来看看谁在调用它 - 但这就是我得到的:

* thread #1: tid = 0x5eac3, 0x0001e859 TestApp`-[viewControllerB prepareForSegue:sender:](self=0x0dad98b0, _cmd=0x0188185a, segue=0x0ce9e6f0, sender=0x0dad98b0) + 89 at viewControllerB.m:444, queue = 'com.apple.main-thread', stop reason = breakpoint 3.1   * frame #0: 0x0001e859 TestApp`-[ViewControllerB prepareForSegue:sender:](self=0x0dad98b0, _cmd=0x0188185a, segue=0x0ce9e6f0, sender=0x0dad98b0) + 89 at ViewControllerB.m:444
    frame #1: 0x015f8efa UIKit`-[UIStoryboardSegueTemplate _perform:] + 156
    frame …
Run Code Online (Sandbox Code Playgroud)

objective-c ios

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

滚动到顶部,状态栏点按

我已经查看了有关该主题的各种SO问题,但我还没有找到解决方案.我有UIViewController一个UITableViewUICollectionView.UICollectionView当用户点击它时,我希望滚动到顶部.

文档说如果你有多个UiScrollView子类 - 你需要将它们设置为no并且你想要滚动到顶部的UiScrollView为yes.

所以我写了这段代码来完成我的所有观点:

for (UIScrollView *view in self.view.subviews) {
                    if ([view isKindOfClass:[UIScrollView class]]) {
                        view.scrollsToTop = NO;
                    }
                }

                self.collectionView.scrollsToTop = YES;
Run Code Online (Sandbox Code Playgroud)

这样我肯定UiScrollView的任何子类都将它的scrollsToTop属性设置为no.

但是,点击状态栏不会执行任何操作.

谁能告诉我这里缺少什么?

谢谢

objective-c uiscrollview ios

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

Dagger 2 - 注入非Android类

Dagger 2在我的Android应用程序中恭维.我按以下方式设置它:

AppComponent.java

@Singleton
@Component(modules = {
  AndroidInjectionModule.class,
  AndroidSupportInjectionModule.class,
  ActivityBuilder.class,
  AppModule.class,
  DataBaseDaoModule.class
})

public interface AppComponent {
  @Component.Builder
  interface Builder {
    @BindsInstance
    Builder application(Application aApplication);

    AppComponent build();
  }

  Application application();
  void inject(MyApplication aApplication);
}
Run Code Online (Sandbox Code Playgroud)

AppInjector.java

ublic class AppInjector {

  public static void init(MyApplication aApplication) {

    //Initialize dagger and inject the aApplication
    DaggerAppComponent.builder().application(aApplication).build().inject(aApplication);

    aApplication.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
      @Override
      public void onActivityCreated(Activity aActivity, Bundle aBundle) {
        handleActivity(aActivity);
      }

      @Override
      public void onActivityStarted(Activity aActivity) {
      }

      @Override
      public void onActivityResumed(Activity aActivity) { …
Run Code Online (Sandbox Code Playgroud)

java android dagger-2

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

从ViewModel访问strings.xml

我正在使用Dagger 2 DataBindng和新的Android Lifecycle组件,这些组件具有ViewModels

在我的内部,ViewModel如何访问我的strings.xml?我在想,在第一,注入ContextviewModel,然而,这只会泄漏内存。

还有其他方法吗?

android android-context dagger-2 android-viewmodel android-architecture-components

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

AFNetworking:编码包含'%'输出的URL字符串是%25

使用AFNetworking 2.0 - 当使用NSDictionary参数执行get请求时 - 我的一个参数中包含一个% - 看起来AFNetworking在编码URL时将%25放在%前面 - 无论如何要阻止这个舞会发生?

ios afnetworking-2

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

Xcode 7.1 beta 2-禁用ATS

嘿,我花了最后一天左右我的大脑尝试并且未能禁用ATS,我知道它也被认为是坏的,但我目前只在内部处理应用程序.我在网上尝试了很多建议无济于事,最新尝试下面的info.plist.我迷路了怎么办?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>BNDL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>

    <key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>localhost</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

调试控制台错误打印

error =可选(错误域= NSURLErrorDomain代码= -1022"无法加载资源,因为App Transport Security策略要求使用安全连接."UserInfo = {NSUnderlyingError = 0x7f9670e85620 {Error Domain = kCFErrorDomainCFNetwork Code …

xcode ios ios9 xcode7

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

如何使用AFHTTPSessionManager进行GET请求?

所以我想使用AFNetworking V2.0来获取NSURLSession的GET请求(iOS7的新API)

到目前为止,我已经得到了这个 - 但这是正确的方法吗?

NSString *tempURL =[NSString stringWithString:url];

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    [manager GET:tempURL parameters:params success:^(NSURLSessionDataTask *task, id responseObject)
     {
         //Working

     }failure:^(NSURLSessionDataTask *task, NSError *error)
     {
         //Failed!!

     }];
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

objective-c ios afnetworking-2

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

Dagger 2-提供应用程序类

我试图用来Dagger 2注入我的应用程序类,MyApplication因为我在各种地方都使用它。这是我使用的设置Dagger 2.11

MyApplication.java

public class MyApplication extends Application  implements HasActivityInjector {

  @Inject
  DispatchingAndroidInjector<Activity> dispatchingAndroidInjector;

  @Override
  public void onCreate() {
    super.onCreate();
    AppInjector.init(this);
  }

  @Override
  public DispatchingAndroidInjector<Activity> activityInjector() {
    return dispatchingAndroidInjector;
  }
}
Run Code Online (Sandbox Code Playgroud)

AppInjector.java

public class AppInjector {

  public static void init(MyApplication application){

    //Initialize dagger and inject the application
    DaggerAppComponent.builder().application(application).build().inject(application);

    application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
      @Override
      public void onActivityCreated(Activity activity, Bundle aBundle) {
        handleActivity(activity);
      }

      @Override
      public void onActivityStarted(Activity activity) {

      }

      @Override
      public void onActivityResumed(Activity activity) { …
Run Code Online (Sandbox Code Playgroud)

java android dagger-2

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