小编Rog*_*Rog的帖子

如何检查视图控制器是否可以执行segue

这可能是一个非常简单的问题,但在搜索时没有产生任何结果,所以这里是......

我试图找出一种方法来检查某个视图控制器是否可以在调用该performSegueWithIdentifier:方法之前执行带有标识符XYZ的segue .

有点像:

if ([self canPerformSegueWithIdentifier:@"SegueID"])
    [self performSegueWithIdentifier:@"SegueID"];
Run Code Online (Sandbox Code Playgroud)

可能?

objective-c ios ios5 uistoryboardsegue

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

捆绑和gem安装之间的区别?

我很确定这是一个非常基本的问题,但作为一个RoR新手,我想了解为什么有时候我会使用bundle install(从我的承诺安装所有Gems及其来自Gemfile的dependecies)和gem install [gemname]?

两者之间的根本区别是什么?我何时会支持gem install而不是bundle install?

谢谢!ROG

gem ruby-on-rails bundler

28
推荐指数
2
解决办法
4041
查看次数

在UIScrollView内检测UITableViewCell上的滑动手势

我希望有人能够帮助我解决目前正在解决的问题!

给定以下视图层次结构

在此输入图像描述

我希望能够在我的自定义UITableViewCell上检测滑动手势.

我已经将UIScrollView子类化,并有一个hitTest:withEvent:方法,用于检查我是否触摸了tableview单元格(或其内容),在这种情况下,我设置了以下滚动视图属性:

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView* result = [super hitTest:point withEvent:event];
    if ([result.superview isKindOfClass:[UITableViewCell class]] || [result.superview tag] == SUBVIEW_TAG)
    {
        self.canCancelContentTouches = NO;  
        self.delaysContentTouches = YES;
    } else {
        self.canCancelContentTouches = YES;
        self.delaysContentTouches = NO;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我也实施了:

- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
    if (view.tag == SUBVIEW_TAG || [[view superview] isKindOfClass:[UITableViewCell class]])
        return NO;
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

如果被触摸的视图是表格视图单元格,则返回NO.

这些方法都被调用并按预期执行其操作,但我仍然无法阻止UIScrollView"占用"滑动手势.

有趣的是,如果我在上面的两个方法(带有SUBVIEW_TAG的方法)中包含包含tableview和cell的UIView,它的工作方式非常完美,所以我猜它必须与UITableView继承自UIScrollView这一事实有关.

我的主要目标是能够在细胞上滑动以显示细胞的更多选项.滚动视图将捕获该视图上任何其他位置的水平滑动,并根据其正常行为水平移动内容.

任何想法将非常感谢!

谢谢!ROG

uitableview uiscrollview uigesturerecognizer

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

Android - 从支持库中删除重新定义的类(AsyncTaskCompat)

首先,如果我没有包含要回答的这个问题的所有必需信息,请道歉.我对Android开发有些新手,我仍然对构建工具,API级别等有所了解.所以如果有任何其他信息我可以告诉我,以帮助您帮助我!

更新我的Android项目编译SDK版本,以27后,我意识到那个版本27.0.2com.android.support:support-v4不再包括AsyncTaskCompat(该类已弃用和删除).

我有一个非开源的,不易更换的第三方库,不再受支持且仍在使用AsyncTaskCompat.

既然AsyncTaskCompat是开源的,我想我可以通过在我的项目中重新定义它来简单地重新引入它.

我已尝试在我的项目中重新定义它,com.android.support.v4.os但即使项目编译没有任何问题,当我运行使用第三方库的应用程序部分时,我得到一个崩溃,找不到类错误AsyncTaskCompat.

有什么明显的东西可能会丢失吗?

java android android-appcompat

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

NSDate独立于时区?

我有一个应用程序,显示某些渡轮旅行的时间表.

如果我前往不同的时区 - 比如说落后4个小时,那么上午10点的轮渡旅行现在显示为早上6点?

我知道这与如何根据时区处理日期有关,但我无法弄清楚如何改变这种行为.

目前,这是我如何获取日期并在UILabel上显示:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm"];
[self.departureTime setText:[dateFormatter stringFromDate:[self.route objectForKey:@"departureTime"]]];
[self.arrivalTime setText:[dateFormatter stringFromDate:[self.route objectForKey:@"arrivalTime"]]];
[dateFormatter release];
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

iphone objective-c nsdate nstimezone ios

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

Coredata和NSOrderedSet - 如何定义集的顺序?

我查看了现有的文档,找不到任何可以确认我所看到的行为的内容.

从iOS 5开始,可以对CoreData关系进行排序,在这种情况下,返回的对象是NSOrderedSet.

任何人都可以确认集合中对象的顺序与它们的创建顺序相匹配吗?

干杯,罗格

core-data objective-c ios nsorderedset

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

获取NSFetchedResultsController,NSSortDescription和sectionNameForKeyPath以协同工作

我目前正在开发一个具有几个实体和关系的应用程序,如下所示:

项目 << - > 类别.

我目前正在获取Item实例并使用项目的各个部分显示它们category.name.在这种情况下,我可以使用排序描述符按名称对类别进行排序,这非常简单,工作正常(下面的相关代码):

-(NSFetchedResultsController*)fetchedResultsController {
    if (fetchedResultsController_ != nil)
        return fetchedResultsController_;
    NSManagedObjectContext *moc = [order_ managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:moc];
    [fetchRequest setEntity:entity];
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"category.name" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];
    [sortDescriptors release];
    [sortDescriptor release];
    NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
                                          initWithFetchRequest:fetchRequest
                                          managedObjectContext:moc
                                          sectionNameKeyPath:@"category.name"
                                          cacheName:nil];
    controller.delegate = self;
    self.fetchedResultsController = controller;
    [controller release];
    [fetchRequest release];

    NSError *error …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsfetchedresultscontroller ios

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

从nib文件加载UIView而不需要猜测

好的,这是另一个问题.

我正在创建一个名为UIView的ProgressView视图,它是一个带有活动指示器和进度条的半透明视图.

我希望能够在需要时在我的应用程序中的不同视图控制器中使用此视图.

我知道有3种不同的做法(但我只对其中一种感兴趣):

1)以编程方式创建整个视图,根据需要进行实例化和配置.不用担心我会得到那个.

2)在界面构建器中创建UIView,添加所需的对象并使用如下方法加载它.问题在于我们基本上猜测视图是objectAtIndex:0因为在文档中我没有找到对[[NSBundle mainBundle] loadNibName:函数返回的元素顺序的引用.

NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"yournib" 
                                                 owner:self 
                                               options:nil];
UIView *myView = [nibContents objectAtIndex:0];
myView.frame = CGRectMake(0,0,300,400); //or whatever coordinates you need
[scrollview addSubview:myView];
Run Code Online (Sandbox Code Playgroud)

3)子类UIViewController,让它按照正常方式管理视图.在这种情况下,我永远不会实际将视图控制器推入堆栈,而只是将其视图:

ProgressViewController *vc = [[ProgressViewController alloc] initWithNibName:@"ProgressView" bundle:nil];
[vc.view setCenter:CGPointMake(self.view.center.x, self.view.center.y)];
[self.view addSubview:vc.view];
[vc release];
Run Code Online (Sandbox Code Playgroud)

据我所知,#3是这样做的正确方法(除了以编程方式),但我不完全确定释放ProgressView的视图控制器是否安全,而另一个控制器的视图保留其主视图(直觉说它会泄漏?)?

在这种情况下,我应该在内存管理方面做些什么,我应该在何时何地发布ProgressView的视图控制器?

提前感谢您的想法.

干杯,

ROG

memory-management uiviewcontroller uiview ios

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

Swift:如何有选择地返回集合视图部分的标题?

我有一个UICollectionViewDiffableDataSource这样的:

var data:UICollectionViewDiffableDataSource<Section, Message>!
Run Code Online (Sandbox Code Playgroud)

我像这样定义节标题的布局:

let header = NSCollectionLayoutBoundarySupplementaryItem(
    layoutSize: .init(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(10)),
    elementKind: UICollectionView.elementKindSectionHeader,
    alignment: .top
)
section.boundarySupplementaryItems = [header]
Run Code Online (Sandbox Code Playgroud)

最后,为了返回我的标头,我有一个返回UICollectionReusableView类似以下内容的函数:

func setupHeaderData() {
    data.supplementaryViewProvider = { collectionView, kind, indexPath in
        return DateStampBuilder(data: self.data, style: self.style).build(collectionView: collectionView, kind: kind, indexPath: indexPath)
    }
}
Run Code Online (Sandbox Code Playgroud)

很棒的是:我可以在我的UICollectionView.

我想要什么:我如何可以选择不显示特定部分的特定标题?

当我尝试nil在以下函数中返回时:

data.supplementaryViewProvider = { collectionView, kind, indexPath in
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'the view returned from -collectionView:viewForSupplementaryElementOfKind:atIndexPath …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview swift uicollectionviewcompositionallayout uicollectionviewdiffabledatasource

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

MPMoviePlayerController - 加载电影时捕获网络错误

有没有办法在使用MPMoviePlayerController时捕获异常(特别是网络错误/无可用连接)?

我特别担心的是,一旦播放器的实例初始化,initWithURL:您无法知道电影加载是否由于某种原因而失败.

我已经查看了可用的文档,并意识到我可以通过获取loadState更改的通知

moviePlayerLoadStateChanged:(NSNotification*)notification.
Run Code Online (Sandbox Code Playgroud)

问题是可用的loadState常量不适合错误处理:

MPMovieLoadStateUnknown
MPMovieLoadStatePlayable
MPMovieLoadStatePlaythroughOK
MPMovieLoadStateStalled
Run Code Online (Sandbox Code Playgroud)

(如果你想知道,MPMovieLoadStateStalled由于某些原因在网络错误期间没有调用它?)

有一个不推荐使用的MPMoviePlayerContentPreloadDidFinishNotification用户提供了一个带有"错误"键的userInfo字典,但是没有适用于iOS 3.2及更高版本的内容.

任何帮助将非常感谢.

mpmovieplayercontroller

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