小编cas*_*las的帖子

找不到协议声明

我有两个view controllers AB,他们都拥有对方作为自己的代表.

当我除了在头文件的开头和#import另一个头文件中定义协议之外什么都没做的时候,我得到两个错误 -

找不到"BDelegate"的协议声明,它在Ah(我写的地方)中显示无法找到"ADelegate"的协议声明,这是在Bh(我写的地方)中显示的

在线查看,人们早些时候写过,包含头文件的循环包含可能会导致问题.他们建议使用#include相反,或@class声明像 -

@class A
Run Code Online (Sandbox Code Playgroud)

代替

#import A.h
Run Code Online (Sandbox Code Playgroud)

#import B.h

我几乎试过这些进口的每一种组合,而且@classes,#include但仍然无法摆脱警告.此外,在线解决方案建议移动#import.m文件,但这也没有帮助.部分原因是在线解决方案有点模糊 - 如果你可以分解它会很棒.

关于可以做些什么来解决这个问题的任何建议?


- BigViewController.h -

#import "BaseViewController.h"
#include "BaseViewController.h"

@class BigViewController;

@protocol BigViewControllerDelegate
-(void) BigViewController:(BigViewController *) bigView;
@end

@interface BigViewController : UIViewController <BaseViewControllerDelegate>
{    
     //delegate
     id <BigViewControllerDelegate> delegate;

ivars...    
}

@properties...
@end

--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

- BaseViewController.h -

#<UIKit/UIKit.h>

#import "BigViewController.h"
#include "BigViewController.h"

@class BigViewController;

@protocol …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch protocols objective-c

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

Android build使用build.xml失败:479:SDK没有安装任何Build Tools

为什么我的构建失败并出现此错误?

{android-sdk} /tools/ant/build.xml:479:SDK没有安装任何Build Tools

它在将SDK工具更新到22后开始显示

android

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

调用popViewControllerAnimated两次

UINavigationController有一系列的UIViewControllers关于它.在某些情况下,我想要回弹两个级别.我以为我可以popViewControllerAnimated连续两次调用它,但事实证明,第二次调用它时,它不会弹出任何东西而是返回NULL.我是否需要存储对目标VC的引用并调用popToViewControllerAnimated?我可以这样做,但它使我的代码变得复杂,因为UIViewController当我将VC推入堆栈时我必须传递*.

这是相关的片段:

UIViewController* one = [self.navigationController popViewControllerAnimated:YES];
if (...) {
    // pop twice if we were doing XYZ
    UIViewController *two = [self.navigationController popViewControllerAnimated:YES];
    // stored in "one" and "two" for debugging, "two" is always 0 here.
}
Run Code Online (Sandbox Code Playgroud)

我在做一些奇怪的事吗?我想写一些惯用的代码,所以如果"正确"的方式是打电话popToViewControllerAnimated,或者完全不同的话,我会乐意改变它.

iphone uinavigationcontroller

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

在Visual Studio 2015上安装Xamarin

我在Windows操作系统上的Visual Studio(VS)2013上安装了xamarin.它工作正常.

VS 2013中有Xamarin工具如下:

在此输入图像描述

我的问题如下:

我最近在Windows操作系统的桌面上安装了Visual Studio(VS)2015.我想当我打开VS 2015时,我希望能看到Xamarin它,但它没有.然后我Xamarin再次安装了,一次又一次,但仍然Xamarin没有出现在VS 2015中.

我想知道出了什么问题?我错过了什么?顺便说一句,我的桌面上仍然有Visual Studio 2013.

VS 2015中没有xamarin工具如下:

在此输入图像描述

我甚至尝试了以下方法,仍然没有运气.

控制面板 - >程序 - >程序和功能选择Xamarin

单击更改 - >下一步 - >更改单击树视图中每个项目的所需下拉列表,然后选择"将安装在本地硬盘驱动器上".

点击下一步

在此输入图像描述

安装完成后我甚至得到了以下屏幕,但我仍然无法在VS2015中看到Xamarin.

在此输入图像描述

visual-studio xamarin visual-studio-2015

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

在显示推送通知VS静音推送之前,推送触发后台刷新的通知

我想在我的应用程序中实现后台刷新功能,以便在收到推送时.就在向用户显示推送通知之前,我想从后端(Parse.com)下载新消息并将它们保存到阵列中.我正在按照这里的指南:http://developer.xamarin.com/guides/ios/application_fundamentals/backgrounding/part_3_ios_backgrounding_techniques/updating_an_application_in_the_background/

我不确定这个指南有多准确.它指出:iOS 7(及更高版本)通过通知用户之前为应用程序提供在后台更新内容的机会来扩展普通推送通知,以便用户可以打开应用程序并立即呈现新内容.

所以我试着像这样实现我的后台推送:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
{


    if([[userInfo objectForKey:@"aps"] objectForKey:@"content-available"]){

        NSLog(@"Doing the background refresh");
        UINavigationController *navigationController=(UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController];

        MyViewController *myViewController = (MyViewController *)[[navigationController viewControllers] objectAtIndex:1];

        [myViewController.currentUser refreshMessagesArrayWithCompletionHandler:^(BOOL successful, BOOL newMiaos) {

            NSLog(@"messages refreshed the array now has %lu messages",(unsigned long)[myViewController.currentUser.messages count]);
            handler(UIBackgroundFetchResultNewData);
        }];
    }
}
Run Code Online (Sandbox Code Playgroud)

调用后台刷新并显示推送,但推送通知不等待后台任务完成.它只是在收到后立即显示.这是正确的功能吗?上面的教程建议在后台任务完成之前不会显示通知.

然后我开始尝试静默通知,这会触发应用程序在收到推送时在后台下载消息,但不会显示任何通知.因此,我通过在下载完成后触发本地通知来执行此操作.这真的是正确的做法吗?传统应用程序(如whatsapp)是否使用静默通知触发后台刷新,然后触发本地应用程序?看起来有点hacky.当然,后台推送的想法是在显示通知之前准备好数据,但它并不像那样工作.

我注意到的另一件事是静默通知是速率限制的,它们的优先级低于典型的推送通知,所以这肯定会妨碍应用程序的效率......

对此的任何指示都将非常感激.如果我正在以正确的方式接近这个问题,那就试着试试.一切似乎都非常hacky ......

objective-c push-notification ios

24
推荐指数
2
解决办法
8311
查看次数

MarkerClick有效,但InfoWindowClick无法打开ViewModel

以下MarkerClick实现工作,非常好.我可以打开其他View viaShowViewModel

View.cs

mMap.MarkerClick += MMap_MarkerClick;

private void MMap_MarkerClick(object sender, GoogleMap.MarkerClickEventArgs e)
{
   ViewModel.MapInfoSelected(e.Marker.Title);
}
Run Code Online (Sandbox Code Playgroud)

ViewModel.cs

public void MapInfoSelected(string name)
{
    ShowViewModel<StudentViewModel>(new { studentName = name});
}
Run Code Online (Sandbox Code Playgroud)

InfoWindowClick 不会触发打开其他视图.

View.cs

mMap.InfoWindowClick += MMap_InfoWindowClick;

private void MMap_InfoWindowClick(object sender, GoogleMap.InfoWindowClickEventArgs e)
{
  ViewModel.MapInfoSelected(e.Marker.Title);
}
Run Code Online (Sandbox Code Playgroud)

ViewModel.cs

public void MapInfoSelected(string name)
{
 // it hits here, but does not hit `StudentViewModel` Init() method, the app is frozen and do nothing
    ShowViewModel<StudentViewModel>(new { studentName = name});
}
Run Code Online (Sandbox Code Playgroud)

我甚至尝试了SetOnInfoWindowClickListener如下,它也没有打开视图.

 mMap.SetOnInfoWindowClickListener(this);

 public …
Run Code Online (Sandbox Code Playgroud)

android google-maps xamarin.android mvvmcross xamarin

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

FileContentResult和FileStreamResult之间的区别

我正在编辑一些代码,有一种返回FileContentResult类型的方法.我从服务中获得了一个流,所以对我而言,将返回类型更改为更方便FileStreamResult.

我应该将流转换为数组返回FileContentResult吗?

或者我可以安全地改变返回类型吗?

c# asp.net-mvc file

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

如何默认选择UITableViewCell?

我已经创建了一个UITableView并希望UITableViewCell在加载视图时显示选中(蓝色)的特定内容.

iphone cocoa-touch uitableview ios

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

在Javascript中删除属性

我有以下对象

b.push({ data: d, width: 5, color: color });
Run Code Online (Sandbox Code Playgroud)

然后我有

b= [{data:10,width:5, color:"yellow"},{data:12,width:5, color:"red"},etc...];
Run Code Online (Sandbox Code Playgroud)

我添加了color属性,现在我不需要,我想删除它.我想知道最简单的方法是什么?

javascript

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

NSUserDefaults - Xamarin

我只是想保存/恢复几个双打.我所看到的是它在附加到调试器时有效,但是在应用程序关闭15分钟后 - 重新启动应用程序并为两个双打恢复"-180".

这看起来不错吗?或者你认为我以某种方式保存"-180"?

这是设备不是模拟器.我用的是Map.DidUpdateUserLocation哪个MKUserLocationEventArgs.

不知怎的,它给出了-180,-180的位置.可能的Xamarin错误?

    private CLLocationCoordinate2D GetLastLocation()
    {
        var user = NSUserDefaults.StandardUserDefaults;

        double lat = user.DoubleForKey ("LastPositionLat");
        double lng = user.DoubleForKey ("LastPositionLng");

        var location = new CLLocationCoordinate2D (lat, lng);
        return location;
    }

    private void SaveLastLocation(CLLocationCoordinate2D coord)
    {
        var user = NSUserDefaults.StandardUserDefaults;
        user.SetDouble (coord.Latitude, "LastPositionLat");
        user.SetDouble (coord.Longitude, "LastPositionLng");
        user.Synchronize ();
    }
Run Code Online (Sandbox Code Playgroud)

c# iphone xamarin.ios xamarin

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