Objective c UIC控制iOS 6 xcode

Objective c UIC控制iOS 6 xcode,objective-c,iphone,xcode,ios6,uirefreshcontrol,Objective C,Iphone,Xcode,Ios6,Uirefreshcontrol,有没有人举一个简短的例子来说明如何在xcode中实现新的UIRefreshControl。我有一个显示推文的UITableViewController,希望能够下拉和刷新。如果你有UITableViewController,你可以在viewDidLoad中设置它: UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; [refreshControl addTarget:self action:@selector(r

有没有人举一个简短的例子来说明如何在xcode中实现新的
UIRefreshControl
。我有一个显示推文的
UITableViewController
,希望能够下拉和刷新。

如果你有
UITableViewController
,你可以在
viewDidLoad
中设置它:

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh)
         forControlEvents:UIControlEventValueChanged]; 
self.refreshControl = refreshControl;
然后,您可以在此处执行刷新操作:

-(void)refresh {
    // do something here to refresh.
}

完成刷新后,调用
[self.refreshControl endRefreshing]停止刷新控件,正如rjgonzo所指出的

您也可以在Interface Builder中配置此选项。尽管它目前的工作方式,它只为您节省了几行代码

选择TableViewController场景,在属性检查器中,您会找到一个“刷新”下拉列表选项。将其设置为“已启用”。您会注意到在视图控制器层次结构中添加了“刷新控件”(您将看不到任何可视添加到场景本身的内容)。奇怪的是,将刷新控件连接到iAction(值更改事件)后,事件似乎没有被触发。我猜这是一个bug(?),但同时,将“刷新”设置为enabled会创建UIRefreshControl对象,并将其分配给视图控制器的refreshControl属性。完成后,可以将事件处理行添加到viewDidLoad方法:

[self.refreshControl addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged];
在refreshView:方法中,可以执行一些工作,然后停止刷新动画:

- (void)refreshView:(UIRefreshControl *)sender {
    // Do something...
    [sender endRefreshing];
}

这里是你如何下拉和刷新的

UITableViewController.h添加
UIRefreshControl*refreshControl
-(void)刷新MyTableView方法全局声明

UITableViewController.m的
viewdiload

//initialise the refresh controller
refreshControl = [[UIRefreshControl alloc] init];
 //set the title for pull request
    refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"pull to Refresh"];
    //call he refresh function
    [refreshControl addTarget:self action:@selector(refreshMyTableView)
             forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refreshControl;
和带有刷新日期和时间的刷新功能

-(void)refreshMyTableView{

    //set the title while refreshing
    refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing the TableView"];
    //set the date and time of refreshing 
    NSDateFormatter *formattedDate = [[NSDateFormatter alloc]init];
    [formattedDate setDateFormat:@"MMM d, h:mm a"];
    NSString *lastupdated = [NSString stringWithFormat:@"Last Updated on %@",[formattedDate stringFromDate:[NSDate date]]];
    refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:lastupdated];
    //end the refreshing
    [refreshControl endRefreshing];

}

谢谢你,伊布卢!!在(无效)刷新中,我需要放置什么,对不起,我对这个非常陌生,苹果的文档对我来说有点复杂。如果你更喜欢使用按钮刷新,而不是刷新控制器,你将如何处理它?只需将该代码放入
refresh
方法。没什么特别的。记得调用
[self.refreshControl endRefreshing]
停止刷新控件。您还可以设置一个。干杯。我必须将UIRefreshControl添加为UITableView的子视图才能使其正常工作:[self.myTableView addSubview:refreshControl];仅供参考,您可能不想在操作处理程序中调用
-endRefreshing
,因为这样您的
UIRefreshControl
将在执行“捕捉”动画后立即制作动画。关于“事件似乎未被触发”部分。知道为什么吗?看起来我可以在InterfaceBuilder中添加它,但是如果它不起作用又有什么意义呢?要添加的代码不多,但这似乎真的很奇怪。找到原因了吗?只有当您从列表中拉出TableViewController对象时,“刷新”项才会出现。如果你自己构建自己的观点,那不是你。所以,不必怀疑它是否在XCode 6上,IB错误已经修复。现在在IB中,您可以控制从刷新控件到代码的拖动来创建IBAction。看起来您希望看到类似的情况:在新的操作系统中,我们能够呈现与OOTB拉动刷新场景相似/相同的情况。