iPhone开发问题汇总

移动开发 iOS
iPhone开发问题是本文要介绍的内容,主要是来讲述字啊iphone开发过程中遇到的一些BUG,如何来解决,来看详细内容一一解决方案。

iPhone开发问题是本文要介绍的内容,主要是来讲述字啊iphone开发过程中遇到的一些BUG,如何来解决,来看详细内容一一解决方案。

Q:[让tableview滚动到顶端] 从另一个view进入到一个tableview时,总是会自动滚动到先前的滚动条位置,我想让它每次进入这个tableview时,都滚动回最顶端,应该用哪个消息呢?

A: 方法一:使用 scrollToRowAtIndexPath

方法二:

  1. - (void)scrollToTop {  
  2.         [self.tableView setContentOffset:CGPointMake(0,0) animated:YES];                  
  3. }  
  4. - (void)scrollToBottom {  
  5.         NSUInteger sectionCount = [self.tableView numberOfSections];  
  6.         if (sectionCount) {  
  7.                 NSUInteger rowCount = [self.tableView numberOfRowsInSection:0];  
  8.                 if (rowCount) {  
  9.                         NSUInteger ii[2] = {0, rowCount - 1};  
  10.                         NSIndexPath* indexPath = [NSIndexPath indexPathWithIndexes:ii length:2];  
  11.                         [self.tableView scrollToRowAtIndexPath:indexPath   
  12.                          atScrollPosition:UITableViewScrollPositionBottom animated:YES];  
  13.                 }  
  14.         }          

方法三:

  1. [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:_currentRow inSection:0] animated:YES   
  2.  scrollPosition:UITableViewScrollPositionMiddle]; 

首先使用selectRowAtIndexes: 选择行数,滚动的话tableview的superview时scrollview,scrollview可以滚动到某个position 那么就要计算这个position position = table row height * index,就得到滚动的位置了。

Q:在使用SLQite3调用sqlite3_bind_text函数时需要使用char *类型的参数,在sqlite3_column_text函数中需要使用char *类型的返回值,如何将字符串对象在NSString和Char *之间进行转换?

A:

将NSString转换成char *:[NSString UTF8String]

将char *转换成NSString:[NSString stringWithUTF8String:]

例如:

  1. //=======NSString to char *==============  
  2.  NSString *updateSign = @"AAAA";  
  3.  sqlite3_bind_text(statement, 1, [updateSign UTF8String], -1, NULL);  
  4.    
  5. //=========char * to NSString============  
  6.  columnName.text = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)]; 

Q:如何解决在iPhone程序开发中常遇到“unrecognized selector sent to instance”的问题?

A:造成该问题的大部分原因是对象被提前release了,在不希望它release的情况下,指针还在,对象已经不在了。主要是因为init初始化函数中,没有对属性使用self.[属性]=xxxx的方式赋值,而是直接对属性所对应的私有变量进行赋值,导致属性对象没有retain而提前释放。解决方法,使用self.[属性]=xxxx语句对属性赋值即可。

Q:我想计算两个NSDate的数据相差几天几个小时几分几秒怎么办阿?

A:

  1. NSTimeInterval      
  2. time = [date1 timeIntervalSinceDate:date2]; 

time是date1和date2的秒间隔,大于零说明date1比date2晚,反之。。。。要得到几天几分几秒的,算算就出来了。

Q:怎么实现一个登录页面,在登录成功后跳转到另一个页面(我想实现先是一个登录界面点击一个登录按钮载跳转到UITabBarController界面怎样处理啊)?

A:可以尝试下面的方法:

1,在MainWindow.xib里放入LoginViewController和UITabBarController。

2,Delegate里application加入下记代码。

  1. [window addSubview:tabBarController];  
  2.  [window addSubview:loginViewController]; 

3,Login成功后,在LoginViewController里加入下记代码。

  1. [self.view removeFromSuperview]; 

Q:iPhone中如何实现类似于Timer的定时操作?

A:类似下面代码实现:

  1. timer = [NSTimer scheduledTimerWithTimeInterval:(3) target:self selector:@selector (onTimer:) userInfo:nil repeats:YES];  
  2.    
  3. - (void)onTimer:(NSTimer*)timer {  
  4.          //处理  
  5.               ......  
  6.  } 

Q:UITableViewCell 里 有个 UITextField当点击UITextField时会出现软键盘,为了返回UITextField的值,我在valueChanged事件绑定了 rootViewController 的-(IBAction) textAction : (id) sender;可是我同时需要知道该Cell 的 indexPath.row 该怎么做?

A:有两种方法:

方法1

先获取UITextField所在的Cell.

  1. NSIndexPath *path =    [tableView indexPathForCell:      
  2. (UITableViewCell *) [ (UITextField *)sender superview] ]; 

方法2

首先,在table loadview 制造cell的时候在cell.tag和textField.tag 设个值

  1. tmpcell.tag = 3;  
  2. tmpcell.textField.tag = 3

然后事件启动的时候这样

  1. - (IBAction)textAction:(id)sender  
  2.  {  
  3.          NSInteger tag = [sender tag];  
  4.          NSIndexPath *indexPath = [self.tableView indexPathForCell: (UITableViewCell *)[self.tableView viewWithTag:tag]];  
  5.          [[[rawElementsArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] setValue:[sender text] forKey:@"value"];  
  6.  } 

小结:iPhone开发问题汇总的内容介绍完了,希望本文对你有所帮助!更多关于iphone开发的相关内容,请参考 iphone开发频道

责任编辑:zhaolei 来源: 互联网
相关推荐

2013-07-23 07:24:57

iOS开发学习iOS开发问题集锦

2009-06-29 09:38:50

JSF标签JSF

2022-04-02 20:27:30

ETS操作系统鸿蒙

2010-03-01 17:15:03

Python程序开发

2009-06-11 16:57:13

2020-10-18 12:00:27

前端开发架构

2022-09-30 13:32:25

云原生云原生开发

2011-08-11 15:23:04

iPhoneNSBundleXcode

2011-07-08 14:09:51

iPhone UI

2022-09-13 13:49:05

数据库隔离

2012-02-02 15:57:09

HibernateJava

2009-11-25 13:33:39

并发

2009-03-27 14:31:30

iPhone应用苹果

2011-08-01 15:17:17

iPhone开发 证书 签名

2011-07-06 17:53:40

iPhone SDK Xcode

2011-07-25 18:02:51

iPhone LibFetion 移植

2014-08-07 17:41:10

苹果iPhone升级

2014-07-01 11:18:37

Android Stu问题汇总

2021-11-29 18:07:50

软件安全网络攻击漏洞

2011-07-21 14:32:06

iPhone App 游戏
点赞
收藏

51CTO技术栈公众号