小编Pat*_*Pat的帖子

View Controller Nav中的iOS Refresh按钮:在单击时重新加载从解析的JSON创建的所有tableViewCell

我有一个相当重要的概念问题,许多人已经问过,但搜索找不到一个现成的明确答案.

我的应用程序很简单:几行TableViewCells填充了来自解析的JSON提要的数据.单击一个单元格时,该单元格的信息将传递给SecondViewController并显示.JSON提要也存储在.plist中,如果Internet不可用,则从.plist填充TableViewCell.

这一切都很有效.

但是,我需要的最后一件事是在我的FirstViewController顶部的刷新按钮来刷新JSON提要,并且表中的所有单元格都包含来自新变量的新数据.但是,我遇到了实现这个的问题:

我原来的JSON调用和填充单元格的变量位于ViewDidLoad方法中.加载视图时,这些变量将"设置"并且不会刷新.此外,我可以将JSON调用和变量移动到viewWillLoad中 - 每次单击一个单元格后刷新表格,然后单击"返回"到firstViewController - 这将成功更新JSON和单元格,但它确实会影响回到MainViewController时,速度并使视图控制器"暂停",这使得调用我的原始JSON并在viewWillLoad中设置我的变量是一个不可行的选项.

我在ViewDidLoad中创建了一个重新加载按钮,它链接到IBAction方法"refresh":

在ViewDidLoad中以Programitically方式创建按钮:

// Reload issues button
UIBarButtonItem *button = [[UIBarButtonItem alloc]
                           initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
                           target:self
                           action:@selector(refresh:)];
self.navigationItem.rightBarButtonItem = button;
[button release];
Run Code Online (Sandbox Code Playgroud)

与之相关的行动方法:

- (IBAction)refresh:(id)sender {

    myRawJson = [[NSString alloc] initWithContentsOfURL:[NSURL  
                                  URLWithString:@"http://www.yoursite.com/json.JSON"]  
                                  encoding:NSUTF8StringEncoding 
                                  error:nil];

    SBJsonParser *parser = [[SBJsonParser alloc] init];
    NSDictionary * myParsedJson = [parser objectWithString:myRawJson error:NULL];

// New updated dictionary built from refreshed JSON
    allLetterContents = [myParsedJson objectForKey:@"nodes"];

// Log the new refreshed JSON
    NSLog(@"You clicked refresh. Your new JSON is %@", myRawJson); …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview nsnotifications uiviewcontroller ios

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

SVG路径元素.transition() - 在哪里添加?

基本上,我希望我的图形从x轴开始,并在两秒内增长到实际数据值.这可能是一件简单的事情,但我似乎无法让它发挥作用.

我正在追加一个区域元素,其中d =""属性是由函数(区域)构建的,我不知道在哪里添加转换.

首先,我想在区域函数中执行此操作,但这失败了.当添加区域元素但没有成功时,我也试图这样做.

这是我的代码:

// Create the area element for each object - a function that will be passed to "path"
var area = d3.svg.area()
    .x(function(d) { return x(d.year); })
    .y0(height)
    //.y1(height)
    //.transition()
    //.duration(2000)
    .y1(function(d) { return y(d.average); });

// build the container SVG element
var svg = d3.select("#co2").append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom)
    .append("g")
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")")

svg.append("path") 
    // pull in data to the …
Run Code Online (Sandbox Code Playgroud)

javascript svg transition d3.js

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

parseDate = d3.time.format("%Y")无效

我的图表完全按预期工作,除了我的parseDate函数不想在x轴上给我正确的日期.我确信这很简单.

目前我正在添加d3.v2.min.js,没有任何额外的帮助库 - 我还需要其他东西才能让d3.time.format()工作吗?

在不解析日期的情况下,我的数据返回x轴:

.960   .965   .970   .975
Run Code Online (Sandbox Code Playgroud)

而不是

1960   1965   1970   1975
Run Code Online (Sandbox Code Playgroud)

JSON的结构如下:

[{"year":1959,"average":315.97},
{"year":1960,"average":316.91},
{"year":1961,"average":317.64},
...etc
{"year":2011,"average":391.57}]
Run Code Online (Sandbox Code Playgroud)

带有//注释部分的代码是问题:

<script>
var margin = {top: 20, right: 20, bottom: 30, left: 50},
    width = 920 - margin.left - margin.right,
    height = 500 - margin.top - margin.bottom;
Run Code Online (Sandbox Code Playgroud)

//下面的parseDate不起作用

var parseDate = d3.time.format("%Y").parse;

var x = d3.time.scale()
    .range([0, width]);

var y = d3.scale.linear()
    .range([height, 0]);

var xAxis = d3.svg.axis()
    .scale(x)
    .orient("bottom");

var yAxis = d3.svg.axis()
    .scale(y)
    .orient("left");

// data taking …
Run Code Online (Sandbox Code Playgroud)

d3.js

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