小编dea*_*_au的帖子

如何从Referrer Uri获取Controller和Action名称?

从控制器和动作名称构建Uris有很多信息,但是我怎么能这样做呢?

基本上,我想要实现的是从引用页面获取Controller和Action名称(即Request.UrlReferrer).有没有一种简单的方法来实现这一目标?

c# razor asp.net-mvc-3

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

假设高度错误,将较大的行插入UITableView时的动画

我在UITableView中添加或删除行的动画有问题,该行的高度与其他行的高度不同.

以下gifs演示了插入和删除默认高度(44pts)和更大行(100pts)的行的问题.左边的那个是来自模拟器的屏幕录制(最后覆盖第五行的新单元是另一个问题),右边的那个是它应该做什么的模型.

动画问题的GIF它应该如何看待的GIF

就我而言,我有一堆行,每行高度为60磅.当点击单元格中的按钮时,"编辑"单元格将从下方滑出,向下推动下部单元格.此编辑单元格高180磅.当我打电话insertRowsAtIndexPaths:withRowAnimation:或者deleteRowsAtIndexPaths:withRowAnimation:,动画假设60度的高度错误而不是180分时它应该是
这意味着如果UITableViewRowAnimationTop新单元出现在距离位置的-60点,它将最终到达,并向下滑动到新的位置; 它应该做的动画的大约三分之一.同时,下面的行从其起始位置平滑地向下移动到180pts,正如它应该的那样.

有没有人为此制定出实际的解决方案?某种方式告诉新行它应该是什么样的动画?

下面是我用来隐藏和显示编辑行的代码.我正在使用a TLSwipeForOptionsCell来触发编辑,但它很容易使用例如复制tableView:didSelectRowAtIndexPath:

-(void)hideEditFields{
    [self.tableView beginUpdates];

    [self.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForItem:editFormVisibleForRow+1 inSection:0]] withRowAnimation:UITableViewRowAnimationTop];
    editFormVisibleForRow = -1;

    [self.tableView endUpdates];
}

-(void)cellDidSelectMore:(TLSwipeForOptionsCell *)cell{
    NSIndexPath* indexPath = [self.tableView indexPathForCell:cell];
    // do nothing if this is the currently selected row
    if(editFormVisibleForRow != indexPath.row){
        if(editFormVisibleForRow >= 0){
            [self hideEditFields];
            // update the index path, as the cell positions (may) have changed
            indexPath = [self.tableView indexPathForCell:cell];
        }

        [self.tableView beginUpdates];

        editFormVisibleForRow = indexPath.row;
        [self.tableView insertRowsAtIndexPaths:@[
                                             [NSIndexPath …
Run Code Online (Sandbox Code Playgroud)

animation uitableview ios

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

iOS10上UIScrollView顶部的差距

我遇到了UIScrollView上的约束问题,它似乎是iOS10特有的.我似乎在滚动视图的顶部和内部的内容视图之间有一个间隙,它应该粘在顶部.

在iOS 9上似乎没有任何差距,但在iOS 10上出现差距.
为清楚起见,在两种情况下,滚动视图顶部都固定在顶部布局指南的底部,该指南与导航栏的底部完美对齐.iOS 10在滚动视图顶部和内容视图顶部之间引入了导航栏大小的间隙.

我可以将滚动视图的顶部对齐到顶部布局指南的顶部,这会将间隙放在导航栏下方,内容视图可以正常排列,但在iOS 9上,内容视图将位于导航栏的下方.不受欢迎.

我已经快速创建了一些游乐场代码来演示下面的问题.有什么明显的东西我不见了吗?在iOS 10中发生了什么变化使这成为一个问题,我该如何解决它?

比较iPhone 5s模拟器的截图

import UIKit
import PlaygroundSupport

class TestViewController: UIViewController {
    var mainScrollView: UIScrollView
    var contentView: UIView

    init() {
        self.mainScrollView = UIScrollView()
        self.contentView = UIView()

        super.init(nibName: nil, bundle: nil)

        self.view.backgroundColor = UIColor.white
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func viewDidLoad() {
        self.mainScrollView.backgroundColor = UIColor.green
        self.contentView.backgroundColor = UIColor.blue

        self.mainScrollView.translatesAutoresizingMaskIntoConstraints = false
        self.contentView.translatesAutoresizingMaskIntoConstraints = false

        self.view.addSubview(self.mainScrollView)
        self.mainScrollView.addSubview(self.contentView)

        // constrain the scroll view bounds to the view
        self.view.addConstraint(NSLayoutConstraint(item: self.mainScrollView, …
Run Code Online (Sandbox Code Playgroud)

nslayoutconstraint ios9 ios10

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

UINavigationController上的自定义titleView动画设置不正确

我可能在这里做错了,因为这看起来有点愚蠢.
我在我的UINavigationController上设置了一个自定义titleView(以UILabel的形式),在每个页面上都是相同的.为了实现这一点,我在我的app delegate中创建了一个函数来正确显示标签.然后我将其推送到导航堆栈后,在任何子视图上调用此函数.
这是代码(可能比我的解释更有意义):

//In MyAppDelegate.m:
- (void)showTitleForNavigationController:(UINavigationController*) navController {
    UILabel *label = [[UILabel alloc] init];
    // set up label attributes
    // ...
    [label sizeToFit]; //without this line my label won't show at all
    [navController.navigationBar.topItem setTitleView:label];
    [label release];
}

// In SomeViewController.m, when pushing another controller onto the stack:
    UIViewController *otherViewController = //initialize other view controller;
    [self.navigationController pushViewController:otherViewController animated:YES];
    [(MyAppDelegate*)[[UIApplication sharedApplication] delegate] showTitleForNavigationController:otherViewController.navigationController];
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我将下一个视图控制器推入堆栈,并且新控制器平滑地滑动时,在动画的整个持续时间内,标签粘贴在左上方,然后在动画结束后最终捕捉到位.它看起来很奇怪和丑陋.如何正确设置标签,使其从下一个视图平滑滑动?当然,这很简单,我很想念......

animation cocoa-touch uinavigationcontroller titleview

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

在AppModel-> afterFind(cakePHP)中转换时区之间的日期

我有一个cakePHP应用程序,它从两个不同的数据库中提取数据,这些数据库在不同时区的数据中存储日期和时间.一个数据库的时区是Europe/Berlin,而另一个是Australia/Sydney.为了使事情变得更复杂,应用程序托管在美国的服务器上,并且必须在当地时区向最终用户呈现时间.

很容易告诉我必须访问哪个数据库,因此我在我的设置中设置了适当的时区(使用date_default_timezone_set()),beforeFind以便在正确的时区发送带有日期的查询.

我的问题是然后将日期转换afterFind为用户的时区.我通过通过这个时区作为命名参数,并访问这个在我使用的模型Configure::write()Configure.read().这很好用.
问题是它似乎多次应用我的时区转换.例如,如果我Australia/SydneyAustralia/Perth时间上查询数据库应该落后两个小时,但它落后了六个小时.我尝试在转换它们之前和之后回复我的函数的时间,并且每次转换都正常工作,但它不止一次地转换时间,我无法弄清楚原因.

我目前使用的方法(在我看来AppModel)从一个时区转换为另一个时区如下:

function afterFind($results, $primary){
    // Only bother converting if the local timezone is set.
    if(Configure::read('TIMEZONE'))
        $this->replaceDateRecursive($results);
    return $results;
}

function replaceDateRecursive(&$results){
    $local_timezone = Configure::read('TIMEZONE');

    foreach($results as $key => &$value){
        if(is_array($value)){
            $this->replaceDateRecursive($value);
        }
        else if(strtotime($value) !== false){
            $from_timezone = 'Europe/Berlin';
            if(/* using the Australia/Sydney database */)
                $from_timezone = 'Australia/Sydney';
            $value = $this->convertDate($value, $from_timezone, $local_timezone, 'Y-m-d H:i:s');
        } …
Run Code Online (Sandbox Code Playgroud)

php timezone datetime cakephp

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

ASP.NET MVC3 Controller或Model中虚拟路径的根相对路径

这听起来像一个简单的问题,但无法找到我生活的答案.如何将根相对url(~/my/path)转换为/mywebsite/my/pathController和/或Model中的虚拟路径()?

在一个视图上,它很容易做到,只需要打电话@Url.Content("~/my/path/").在控制器中获取物理路径同样容易使用Server.MapPath("~/my/path").但我无法弄清楚如何在控制器中获取虚拟路径.

我的主要问题是我有一个图像的根相对路径,我将传递给将返回的JSON对象.在大多数情况下,这将通过javascript读取并放在页面的某个地方,我不能@Url.Content在我的javascript代码中使用.此外,在某些情况下,此JSON对象将由外部应用程序使用,该应用程序无法理解其~含义.

asp.net virtual-path asp.net-mvc-3

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

每页多个Telerik MVC上传控件?

我正在使用Telerik Extensions for ASP.NET MVC 3,我遇到了上传控件的问题.我想在同一页面上有多个上传控件(例如,我要求提供图像和声音文件).问题是,只有第一个上传控件有效.页面上的任何其他人都可以正常渲染,点击它们仍会显示文件选择对话框,但除第一个之外没有其他任何实际响应.

Telerik似乎没有在控制台或任何事情中报告任何错误,它只是根本不起作用.是否有一些特定的东西我必须要在一个页面上允许多个上传控件?

为了演示,这是破坏的代码不起作用:

@(Html.Telerik().Upload()
    .Name("attachments")
    .Async(async => async.Save("Save", "Resource").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemImageOnSuccess")
        .OnError("ItemImageOnError")
    )
)

@(Html.Telerik().Upload()
    .Name("attachments")
    .Async(async => async.Save("Save", "Resource").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemSoundOnSuccess")
        .OnError("ItemSoundOnError")
    )
)
Run Code Online (Sandbox Code Playgroud)

第二个上载字段正确呈现,但不起作用.

file-upload telerik-mvc razor asp.net-mvc-3

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

如何恢复丢失的CoreData Model版本?

所以,我搞砸了.我在Xcode中创建了一个现有CoreData模型的新版本,并且以某种方式从未最终提交.xcdatamodel文件(或更准确地说,contents文件在其中).现在,不久之后,该文件已经丢失,我无法恢复它.试图在xcode中打开xcdatamodel文件给我错误"文件"内容"因为没有这样的文件而无法打开".

我以为我可以聪明并contents从以前的版本.xcdatamodel文件中复制文件,然后只需添加我为此迁移添加的表(幸运的是我只添加了一个表并生成了一个类,因此再次创建表很容易).问题是,当我在模拟器或已存在数据的设备上运行应用程序时,我收到以下错误:Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed. (Cocoa error 134130.)"

该错误还列出了NSPersistentStoreCoordinator的当前模型哈希,因此现在我假设所讨论的模型的哈希很可能是不同的.

我有什么选择?如何修复数据,以便用户在更新之前不必卸载应用程序并丢失所有数据?

以下是错误的完整内容:

2015-01-21 11:01:11.050 Marq[2699:607] CoreData: annotation: Incompatible version schema for persistent store 'file:///Users/aerion/Library/Developer/CoreSimulator/Devices/71815540-57DE-49BF-A6F6-69500A54281F/data/Applications/EE5B15A6-A5ED-46EB-9DFD-B6B54353E35B/Documents/ARUPInspect_Schema.sqlite'.  store metadata = {
    NSPersistenceFrameworkVersion = 479;
    NSStoreModelVersionHashes =     {
        Asset = <4b2b421f 4295c02f 89b5a2e8 1c4fc3e9 2b515eca 95e89ad6 e65c891d f82b1090>;
        BooleanValue = <3e1758f6 0f04f670 5c150cd4 55f0a0eb b5c1a17e 8b1abdcc ab7044ba fd02dd5e>;
        Client = <c52499f9 a0f482f7 9bdcb115 8217e157 1861f63a e926b55c e7cc85bb b4044464>;
        DataValue = <43afe89a 90c53a31 …
Run Code Online (Sandbox Code Playgroud)

core-data core-data-migration ios

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

获得样式化的UIWebView内容的大小 - 不太合适

这似乎是一个常见问题,但我找不到合适的解决方案.我正在尝试重新调整一堆UIWebView以适应他们的内容,但它似乎无法正常工作.到目前为止,我发现的最佳解决方案是这个答案,但它似乎只是偶尔在我的解决方案中工作.我们的想法是在webViewDidFinishLoad:委托方法中重新调整UIWebView的大小.但是,这仍然无法获得正确的尺寸.如果我在引发一些不确定的时间更新 webViewDidFinishLoad:,内容不会得到正确的大小.

我将在下面描述我的情况,我将在Gist上粘贴相关的来源.

问题描述

我有一种情况,我从JSON API获取数据并在webview中显示数据.API返回一个对象数组,每个对象都有一个带有HTML格式文本的"content"字段.设计师给出了一个结构,其中包含一个(大部分)隐藏视图,您可以向上滑动显示,其中包含所有内容的滚动视图,以非常特殊的方式格式化.

为了实现这一点,我有三个视图控制器:主视图控制器,在主视图控制器上向上滑动以显示的辅助视图控制器,以及从JSON API结果显示一个html格式内容项的三级视图控制器.
辅助视图控制器包含UIScrollView和一组第三视图控制器.每个第三视图控制器都包含一个UIWebView,用于显示HTML格式的内容,以及用于显示JSON对象的其他属性的标签.因为第三视图将显示在辅助视图中的UIScrollView内,所以需要重新调整第三视图的UIWebView以适合其内容并禁用用户交互以防止滚动视图中的滚动视图混乱场景.

使所有这些工作的过程如下:

  1. 首先,在主控制器ViewDidLoad上,加载并显示辅助视图和活动指示器,以便UI看起来不会冻结
  2. 接下来,从JSON API加载数据
  3. 当加载API的数据(通过委托通知)时,构造第三级视图控制器,从加载的数据中设置它们的属性并将它们添加到辅助控制器的列表中.
  4. 完成后,调用辅助控制器的设置方法.此方法循环遍历第三级控制器列表并依次调用其设置方法
  5. 每个三级控制器的设置方法设置标签的文本,并使用loadHTMLString:预定义的html文件的内容设置UIWebView 的内容,并替换JSON对象的内容.
  6. 在第三级控制器的webViewDidFinishLoad:委托方法上,使用此答案中的方法,根据内容大小重新调整Web视图的大小.
  7. 重新调整三级控制器视图的大小以适合Web视图并定位Web视图下方的任何标签
  8. 然后,三级控制器调用委托方法来通知辅助控制器它已完成加载.辅助控制器监视其三级控制器中的哪个已完成加载.
  9. 当所有三级控制器都完成加载时,辅助控制器循环遍历其列表并将第三视图添加到其UIScrollView的内容中,调整帧和内容高度.

uiwebview ios

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