iPhone開發問題匯總

來源:互聯網
上載者:User

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開發問題匯總的內容介紹完了,希望本文對你有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.