Objective c UIC控制iOS 6 xcode
有没有人举一个简短的例子来说明如何在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
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拉动刷新场景相似/相同的情况。