{"id":10396,"date":"2014-10-25T05:06:25","date_gmt":"2014-10-24T18:06:25","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10396"},"modified":"2014-10-25T05:06:25","modified_gmt":"2014-10-24T18:06:25","slug":"quiz-software-integration-into-blog-courses-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/quiz-software-integration-into-blog-courses-tutorial\/","title":{"rendered":"Quiz Software Integration into WordPress Blog Courses Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Quiz_BlogCourse.png\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Quiz Software Integration into WordPress Blog Courses Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Quiz_BlogCourse.png\" title=\"Quiz Software Integration into WordPress Blog Courses Tutorial\" id=\"qqoijximpept\" onmouseover=\" this.src=this.src.replace('.jpg','.PNG').replace('.png','.jpg').replace('.PNG','.png');     \" \/><\/a><p class=\"wp-caption-text\">Quiz Software Integration into WordPress Blog Courses Tutorial<\/p><\/div>\n<p>Today we revisit and build on the ideas from two previous tutorials called <a target=_blank href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial'>Xcode iOS Dynamic UIButton Primer Tutorial<\/a> as below and <a target=_blank href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial'>Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown way way below, covering the Xcode iOS Mobile App issue (ie. the &#8220;UIWebView &#8216;on its lonesome&#8217; issue&#8221;) to create an iOS mobile app for our <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=705' title='Learning Programming Android App'>Learning Programming<\/a> idea extended to include the option of <a target=_blank title='Wordpress blog landing page' href='http:\/\/www.wordpress.org'>WordPress<\/a> <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10064' title='WordPress Blog Course Design Cookies Tutorial'>Blog Course Postings<\/a>, and using dynamic UIButton to &#8230;<\/p>\n<ol>\n<li><a target=_blank href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial' title='See Xcode iOS Dynamic UIButton Primer Tutorial below'>show you<\/a> how to add a dynamic <a target=_blank title='UIButton information from Apple' href='https:\/\/developer.apple.com\/library\/ios\/documentation\/uikit\/reference\/uibutton_class\/index.html'>UIButton<\/a> at loading (if you want to know &#8230; thanks to the great Open Source community for all the ideas emanating from this <a target=_blank title='Dynamic UIButton ideas ... thanks' href='http:\/\/stackoverflow.com\/questions\/1378765\/how-do-i-create-a-basic-uibutton-programmatically'>link<\/a>)<\/li>\n<li>also is one way to solve the UIWebView &#8220;on its lonesome&#8221; issue (when pointing at URLs without total navigational integrity (ie. they have <i>a<\/i> tags with <i>target=&#8217;_blank&#8217;<\/i> for instance)) &#8230; <b>&#8216;(but please know such a scenario is not good without also providing, at least, buttons for the equivalent functionality as the web browser&#8217;s back and forward buttons &#8230; remember, with UIWebView there is no address bar, and no multiple tabs nor windows &#8230; if your webpage has complete forward and backward navigational integrity that could suit a UIWebView <i>&#8220;on its lonesome&#8221;<\/i>)&#8217;<\/b> &#8230; mentioned in <a target=_blank href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial'>Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown below<\/li>\n<\/ol>\n<p>&#8230; but this time we continue on from <a target=_blank title='Xcode Learning Programming Blog Course Cookies Tutorial' href='#xlpbct'>Xcode Learning Programming Blog Course Cookies Tutorial<\/a> as shown below to (software) integrate the other way around, the Learning Programming Quizzes into the WordPress Blog Courses functionality at this blog.  You may recall that with <a target=_blank title='Xcode Learning Programming Blog Course Cookies Tutorial' href='#xlpbct'>Xcode Learning Programming Blog Course Cookies Tutorial<\/a> we (software) integrated WordPress Blog Courses into the Learning Programming Quizzes functionality.  All this doesn&#8217;t explain why, and the reason to me, is that if you ever undertake a course <a target=_blank title='Off your own bat?' href='http:\/\/phorums.com.au\/archive\/index.php\/t-147267.html'><i>off your own bat<\/i><\/a> it is also good to have some way to independently tell whether anything is sinking in, or to look at things in a different way, perhaps, as the Quiz <a target=_blank title='Learning Programming' href='http:\/\/www.rjmprogramming.com.au\/Learning\/Programming\/?isMobile=n'>questions<\/a> are derived from that big wide world out there in <i>www<\/i> land while the WordPress Blog Courses (at this <a target=_blank title='Wordpress Blog Courses' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?page_id=10014'>blog<\/a>, by definition) represent more personalized experience.<\/p>\n<p>Here are the relevant PHP code snippets for this WordPress blog&#8217;s TwentyTen theme residing in wp-content\/themes\/twentyten\/header.php (the bold parts of which are particularly relevant to the Quiz integration into Blog Courses) that is amended as this Blog&#8217;s interface to Javascript client code, the <a target=_blank title='DOM information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Document_Object_Model'>DOM<\/a> aspects of which are very important for our task today, where it establishes the header Javascript and two sections of code are involved (as has been the pattern lately (the non-bold parts represent work from these previous recent tutorials)) &#8230;<\/p>\n<p><code><br \/>\nvar ourck=location.search.split('ck=')[1] ? location.search.split('ck=')[1].split('&')[0] : '';<br \/>\nvar ourpp=location.search.split('pp=')[1] ? location.search.split('pp=')[1].split('&')[0] : '';<br \/>\nvar ourpn=location.search.split('pn=')[1] ? location.search.split('pn=')[1].split('&')[0] : '';<br \/>\nvar ourpage=location.search.split('page_id=')[1] ? location.search.split('page_id=')[1].split('&')[0] : '';<br \/>\nvar ourp=location.search.split('p=')[1] ? location.search.split('p=')[1].split('&')[0] : '';<br \/>\nvar ourcourseurl='';<br \/>\nvar ourcoursetitle='';<br \/>\nvar ua = navigator.userAgent;<br \/>\nvar isiPad = \/iPad\/i.test(ua) || \/iPhone OS 3_1_2\/i.test(ua) || \/Android\/i.test(ua) || \/iPhone OS 3_2_2\/i.test(ua);<br \/>\n<b><br \/>\nvar partopokay=\"y\";<br \/>\nvar nopartopokay=\"\";<br \/>\nvar ilpxframe=\"ilp\" + \"frame\";<br \/>\nvar framexilp=\"frame\" + \"ilp\";<br \/>\nvar ourtopic = \"\";<br \/>\nvar idea = \"\";<br \/>\n   var a1='&lt;br&gt;&lt;br&gt;&lt;a id=g';<br \/>\n   var a2=' href=#';  \/\/i';<br \/>\n   var a3=' title=Top align=center style=color:yellow;&gt;Back to Blog Course Top Menu&lt;\/a&gt;&lt;br&gt;&lt;br&gt;&lt;iframe id=frame';<br \/>\n   var a4='ilp src=http:\/\/www.rjmprogramming.com.au\/Learning\/Programming\/index.php?ourtopic=';<br \/>\n   var a5='!&endthis=Y&isMobile=n width=100% height=900&gt;&lt;\/iframe&gt;';<br \/>\n   var b1='&lt;br&gt;&lt;br&gt;&lt;a id=h';<br \/>\n   var b2='  href=#'; \/\/j';<br \/>\n   var b3=' title=Top align=center style=color:yellow;&gt;Back to Blog Course Top Menu&lt;\/a&gt;&lt;br&gt;&lt;br&gt;&lt;iframe id=ilp';<br \/>\n   var b4='frame src=http:\/\/www.rjmprogramming.com.au\/Learning\/Programming\/index.php?ourtopic=';<br \/>\n   var b5='&endthis=Y&isMobile=n width=100% height=900&gt;&lt;\/iframe&gt;';<br \/>\n<\/b><br \/>\nif (isiPad) {<br \/>\n  &lt;?php<br \/>\n             \/\/echo \"n alert('*\" . $_SERVER['REQUEST_URI'] . \"*'); n\";<br \/>\n    if (strpos(($_SERVER['REQUEST_URI'] . \"*\"), \"?p*\") !== false) {<br \/>\n             \/\/echo \"n alert('\" . $_SERVER['QUERY_STRING'] . \"'); n\";<br \/>\n    $cstuffis = \"\";<br \/>\n    $rma = $_SERVER['REMOTE_ADDR'];<br \/>\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);<br \/>\n    \/\/ you can add different browsers with the same way ..<br \/>\n    if(preg_match('\/(chromium)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000000'.$rma;<br \/>\n    elseif(preg_match('\/(chrome)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00000'.$rma;<br \/>\n    elseif(preg_match('\/(safari)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0000'.$rma;<br \/>\n    elseif(preg_match('\/(opera)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000'.$rma;<br \/>\n    elseif(preg_match('\/(msie)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00'.$rma;<br \/>\n    elseif(preg_match('\/(mozilla)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0'.$rma;<br \/>\n            echo \"n alert('\" . $ua . \"'); n\";<br \/>\n        if (file_exists(dirname(__FILE__) . \"\/..\/PHP\/cookie_\" . $rma . \".is\")) {<br \/>\n          $cstuffis = file_get_contents(dirname(__FILE__) . \"\/cookie_\" . $rma . \".is\");<br \/>\n        } else if (file_exists(dirname(__FILE__) . \"\/..\/..\/..\/PHP\/cookie_\" . $rma . \".is\")) {<br \/>\n          $cstuffis = file_get_contents(dirname(__FILE__) . \"\/..\/..\/..\/PHP\/cookie_\" . $rma . \".is\");<br \/>\n        }<br \/>\n        if ($cstuffis != \"\") {<br \/>\n          $actfs = explode(\"lastcourse=\", $cstuffis);<br \/>\n          if (sizeof($actfs) &gt; 1) {<br \/>\n           $aactfs = explode(\";\", $actfs[1]);<br \/>\n           if ($aactfs[0] != \"\") echo \"n location.href = '\" . $aactfs[0] . \"'; n\";<br \/>\n          }<br \/>\n        }<br \/>\n    }<br \/>\n  ?&gt;<br \/>\n}<br \/>\n<\/code><\/p>\n<p>&#8230; at the top just under &lt;script type=&#8217;text\/javascript&#8217;&gt; and &#8230;<\/p>\n<p><code><br \/>\nfunction topViaDelay() {<br \/>\n  <b>if (partopokay != \"\") {<\/b><br \/>\n    parent.scroll(0, 0);<br \/>\n  <b>}<\/b><br \/>\n}<br \/>\n<b><br \/>\nfunction quizmaybe(firstidea, secondidea) {<br \/>\n var isdone=\"\", ftopic = \"\", gradedfirst = \"\";<br \/>\n var ijk, sstr;<br \/>\n \/\/var ourtopic = \"\";<br \/>\n var ourlooks = \"\", ourlook = \"\";<br \/>\n var ourtopicArray = new Array(\"C#:Chash:C~\", \"C++\", \"Python\", \"C\", \"CSS\", \"PHP\", \"HTML\", \"SQL\", \"ASP.Net\", \"VB.Net\", \"Java\", \"JavaScript\");<br \/>\n var alink = null;<br \/>\n idea = firstidea;<br \/>\n try {<br \/>\n   alink=document.getElementById(firstidea);<br \/>\n } catch (exx) {<br \/>\n }<br \/>\n if (alink == null) {<br \/>\n gradedfirst = \"y\";<br \/>\n idea=secondidea;<br \/>\n try {<br \/>\n   alink=document.getElementById(secondidea);<br \/>\n } catch (exxs) {<br \/>\n }<br \/>\n }<br \/>\n ourtopic = \"C#\";<br \/>\n if (alink != null) {<br \/>\n  for (ijk=0; ijk&lt;ourtopicArray.length; ijk++) {<br \/>\n   sstr = ourtopicArray[ijk].split(\":\");<br \/>\n   ourtopic = sstr[0];<br \/>\n   ourlook = sstr[0];<br \/>\n   if (sstr.length &gt; 2) {<br \/>\n     ourlooks = sstr[2];<br \/>\n     ourtopic = sstr[1];<br \/>\n   } else if (sstr.length &gt; 1) {<br \/>\n     ourlooks = sstr[1];<br \/>\n     ourlook = sstr[1];<br \/>\n   } else {<br \/>\n     ourlooks = sstr[0];<br \/>\n   }<br \/>\n   if (alink.href.toUpperCase().indexOf((\"title=\" + ourlooks + \"~\").toUpperCase()) != -1 || alink.href.toUpperCase().indexOf((\"title=\" + ourlooks + \" \").toUpperCase()) != -1 || alink.href.toUpperCase().indexOf((\"title=\" + ourlooks + \"%20\").toUpperCase()) != -1) {<br \/>\n     ftopic = ourtopic;<br \/>\n     if (gradedfirst != \"\") {<br \/>\n       alink.innerHTML = alink.innerHTML + '&lt;\/a&gt;&lt;br&gt;&lt;a href=\"#g' + ourtopic + '\" onclick=\"partopokay=nopartopokay; if (document.body.innerHTML.indexOf(framexilp) == -1) { document.body.innerHTML = document.body.innerHTML + a1 + ourtopic + a2 + idea + a3 + a4 + ourtopic + a5; } \" title=\"Graded ' + ourtopic + ' ... if Quiz is pale the Finish button could help\" id=\"i' + ourtopic + '\" style=\"margin-left:20px;color:lightgreen;\"&gt;Graded&lt;\/a&gt;&lt;a href=\"#h' + ourtopic + '\" onclick=\"partopokay=nopartopokay;  if (document.body.innerHTML.indexOf(framexilp) == -1) {  document.body.innerHTML = document.body.innerHTML + b1 + ourtopic + b2 + idea + b3 + b4 + ourtopic + b5; } \" title=\"' + ourtopic + ' ... if Quiz is pale the Finish button could help\" id=\"j' + ourtopic + '\" style=\"margin-left:10px;color:green;\"&gt;' + ourlook + ' Quiz';<br \/>\n     } else {<br \/>\n       alink.innerHTML = alink.innerHTML + '&lt;\/a&gt;&lt;br&gt;&lt;a href=\"#h' + ourtopic + '\" onclick=\"partopokay=nopartopokay;  if (document.body.innerHTML.indexOf(framexilp) == -1) {  document.body.innerHTML = document.body.innerHTML + b1 + ourtopic + b2 + idea + b3 + b4 + ourtopic + b5; } \" title=\"' + ourtopic + ' ... if Quiz is pale the Finish button could help\" id=\"j' + ourtopic + '\" style=\"margin-left:20px;color:green;\"&gt;' + ourlook + ' Quiz&lt;\/a&gt;&lt;a href=\"#g' + ourtopic + '\" onclick=\"partopokay=nopartopokay; if (document.body.innerHTML.indexOf(framexilp) == -1) { document.body.innerHTML = document.body.innerHTML + a1 + ourtopic + a2 + idea + a3 + a4 + ourtopic + a5; } \" title=\"Graded ' + ourtopic + ' ... if Quiz is pale the Finish button could help\" id=\"i' + ourtopic + '\" style=\"margin-left:10px;color:lightgreen;\"&gt;Graded';<br \/>\n     }<br \/>\n   }<br \/>\n  }<br \/>\n  ourtopic=ftopic;<br \/>\n }<br \/>\n}<br \/>\n<\/b><br \/>\nfunction courseCookies() {<br \/>\n<b><br \/>\n  if ((ourpp != \"\" || ourpn != \"\") && ourpp != ourp && ourpn != ourp) {<br \/>\n    quizmaybe('atopn','atopp');<br \/>\n  }<br \/>\n<\/b><br \/>\n  var ext = \".html\";  \/\/ \".php\"<br \/>\n  var extp = \".html?\";  \/\/ \".php\"<br \/>\n  var huhd = new Date();<br \/>\n  if (isiPad) {<br \/>\n    ext = \".php?date=\" + huhd;<br \/>\n    extp = \".php?date=\" + huhd + \"&\";<br \/>\n    if ((ourpp != \"\" || ourpn != \"\") && ourpp != ourp && ourpn != ourp) {<br \/>\n&lt;?php<br \/>\n    if ((isset($_GET['pp']) || isset($_GET['pn']))) {<br \/>\n    if ($_GET['p'] != $_GET['pp'] && $_GET['p'] != $_GET['pn'] && ($_GET['pn'] . $_GET['pp']) != \"\") {<br \/>\n    $rma = $_SERVER['REMOTE_ADDR'];<br \/>\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);<br \/>\n    \/\/ you can add different browsers with the same way ..<br \/>\n    if(preg_match('\/(chromium)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000000'.$rma;<br \/>\n    elseif(preg_match('\/(chrome)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00000'.$rma;<br \/>\n    elseif(preg_match('\/(safari)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0000'.$rma;<br \/>\n    elseif(preg_match('\/(opera)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000'.$rma;<br \/>\n    elseif(preg_match('\/(msie)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00'.$rma;<br \/>\n    elseif(preg_match('\/(mozilla)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0'.$rma;<br \/>\n        if (file_exists(dirname(__FILE__) . \"\/..\/PHP\/coursecookies.html\")) {<br \/>\n          file_put_contents(dirname(__FILE__) . \"\/..\/PHP\/cookie_\" . $rma . \".is\", \"lastcourse=\" . \"http:\/\/\" . $_SERVER['SERVER_NAME'] . \":\" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'] . \"; \");<br \/>\n        } else if (file_exists(dirname(__FILE__) . \"\/..\/..\/..\/..\/PHP\/coursecookies.html\")) {<br \/>\n            \/\/ echo \"n alert('\" . dirname(__FILE__) . \"\/..\/..\/..\/..\/PHP\/coursecookies.html\" . \"'); n\";<br \/>\n          file_put_contents(dirname(__FILE__) . \"\/..\/..\/..\/..\/PHP\/cookie_\" . $rma . \".is\", \"lastcourse=\" . \"http:\/\/\" . $_SERVER['SERVER_NAME'] . \":\" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'] . \"; \");<br \/>\n        }<br \/>\n      }<br \/>\n      }<br \/>\n?&gt;<br \/>\n   }<br \/>\n  }<br \/>\n  if (document.URL.indexOf(\"#content\") != -1) {<br \/>\n    setTimeout(topViaDelay, 2000);<br \/>\n  } else {<br \/>\n   if ((ourpp != \"\" || ourpn != \"\") && ourpp != ourp && ourpn != ourp) {<br \/>\n    document.getElementById(\"content\").innerHTML = \"&lt;iframe width=1 height=1 id='myccor' src='\" + document.URL.replace(\"\/wordpress\/?\", \"\/PHP\/coursecookies\" + extp).replace(\"\/wordpress\/\", \"\/PHP\/coursecookies\" + ext)  + \"'&gt;&lt;\/iframe&gt;\" + document.getElementById(\"content\").innerHTML;<br \/>\n    setTimeout(topViaDelay, 2000);<br \/>\n   } else {<br \/>\n    document.getElementById(\"content\").innerHTML = \"&lt;iframe width=1 height=1 id='myccor' src='..\/PHP\/coursecookies\" + ext + \"'&gt;&lt;\/iframe&gt;\" + document.getElementById(\"content\").innerHTML;<br \/>\n   }<br \/>\n  }<br \/>\n}<br \/>\n&lt;\/script&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body onload=\"courseCookies();\" &lt;?php body_class(); ?&gt;&gt;<br \/>\n<\/code><\/p>\n<p>&#8230; around  &lt;\/script&gt;<br \/>\n<\/code><\/p>\n<\/li>\n<\/ul>\n<p>Thanks for visiting today&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Quiz_BlogCourse.png\" title=\"Click picture\">tutorial<\/a> that has a <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Quiz_BlogCourse.jpg\" title=\"Click picture\">&#8220;B&#8221; side<\/a>.<\/p>\n<hr \/>\n<p id='xlpbct'>Previous relevant <a target=_blank title='Xcode Learning Programming Blog Course Cookies Tutorial' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10320'>Xcode Learning Programming Blog Course Cookies Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_LastCoursePosting_iOS.jpg\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode Learning Programming Blog Course Cookies Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_LastCoursePosting_iOS.jpg\" title=\"Xcode Learning Programming Blog Course Cookies Tutorial\" id=\"qoijximpept\"  \/><\/a><p class=\"wp-caption-text\">Xcode Learning Programming Blog Course Cookies Tutorial<\/p><\/div>\n<p>Today we continue to make use of the ideas from two previous tutorials called <a target=_blank href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial'>Xcode iOS Dynamic UIButton Primer Tutorial<\/a> as below and <a target=_blank href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial'>Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown way below, covering the Xcode iOS Mobile App issue (ie. the &#8220;UIWebView &#8216;on its lonesome&#8217; issue&#8221;) to create an iOS mobile app for our <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=705' title='Learning Programming Android App'>Learning Programming<\/a> idea extended to include the option of <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10064' title='WordPress Blog Course Design Cookies Tutorial'>Blog Course Postings<\/a>, and using dynamic UIButton to &#8230;<\/p>\n<ol>\n<li><a target=_blank href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial' title='See Xcode iOS Dynamic UIButton Primer Tutorial below'>show you<\/a> how to add a dynamic <a target=_blank title='UIButton information from Apple' href='https:\/\/developer.apple.com\/library\/ios\/documentation\/uikit\/reference\/uibutton_class\/index.html'>UIButton<\/a> at loading (if you want to know &#8230; thanks to the great Open Source community for all the ideas emanating from this <a target=_blank title='Dynamic UIButton ideas ... thanks' href='http:\/\/stackoverflow.com\/questions\/1378765\/how-do-i-create-a-basic-uibutton-programmatically'>link<\/a>)<\/li>\n<li>also is one way to solve the UIWebView &#8220;on its lonesome&#8221; issue (when pointing at URLs without total navigational integrity (ie. they have <i>a<\/i> tags with <i>target=&#8217;_blank&#8217;<\/i> for instance)) &#8230; <b>&#8216;(but please know such a scenario is not good without also providing, at least, buttons for the equivalent functionality as the web browser&#8217;s back and forward buttons &#8230; remember, with UIWebView there is no address bar, and no multiple tabs nor windows &#8230; if your webpage has complete forward and backward navigational integrity that could suit a UIWebView <i>&#8220;on its lonesome&#8221;<\/i>)&#8217;<\/b> &#8230; mentioned in <a target=_blank href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial'>Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown below<\/li>\n<\/ol>\n<p>&#8230; but this time we tidy up some loose ends such as &#8230;<\/p>\n<ul>\n<li>fixing a lack of functionality within the iOS mobile app&#8217;s UIWebView contents cookie processing regarding the <i>&#8220;last&#8221;<\/i> course blog posting used, by setting up our own <a target=_blank title='Claytons' href='https:\/\/www.youtube.com\/watch?v=ylH43Tcaj60'><i>&#8220;Clayton&#8217;s&#8221;<\/i><\/a> cookies (ie. we use PHP to simulate cookies without there being cookies &#8211; which don&#8217;t always work in UIWebView without some consideration &#8230; another approach is shown with this <a target=_blank title='UIWebView information about Cookies from Apple' href='https:\/\/discussions.apple.com\/thread\/2297336?start=0&#038;tstart=0'>link<\/a>)<\/li>\n<li>fixing an annoying feature of the work whereby with mobile apps any scrolling jumps are quite annoying, and we stop this happening for mobile platforms<\/li>\n<li>adding an extra link to allow navigation to the top of the blog course posting once nearing the bottom, especially as this can represent a lot of scrolling on occasions and because once you are down the bottom it would be good to also see what you have just viewed in some way shape or form (issues like this are considerations for the <a target=_blank title='UX information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/User_experience'>UX<\/a> area of knowledge)<\/li>\n<\/ul>\n<p id='xxmyptoday'>As a general comment about Xcode iOS mobile development (but please note that the idea of step 1. above circumvents the complication &#8230; by the way, the two small red circles in the tutorial <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_LastCoursePosting_iOS.jpg\" title=\"Click picture\">picture<\/a> are me showing you where the Back and Forward buttons are (rather than the code ) &#8230; now that iOS 8 buttons have no background by default it is sometimes necessary to point them out) you must try to get efficient at the linking (or &#8220;connecting&#8221;) of <i>&#8220;nib&#8221;<\/i> file and\/or <i>&#8220;storyboard&#8221;<\/i> GUI objects to your ViewController.h code and for this, we&#8217;d really like to defer to a YouTube video we mentioned in a tutorial a long time back called <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=105' title='Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator ...'>Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator<\/a> &#8230; since then have worked out, with some web browsers, how to lob you at the exact bit, and am hoping you get <i>straight<\/i> to that <i>bit<\/i> with this <a target=_blank title='How to make iOS Apps - Intro to Xcode 4: Building Your First App' <a target=_blank title='8:54' href='https:\/\/www.youtube.com\/watch?v=Ok70cZEIW3I#t=8m54s'>link<\/a> (please have sound up to hear of role of the &#8220;control&#8221; button &#8220;while dragging&#8221;).  By the way, the pink circle shows a new web page link (not the app this time) to link back to the mobile app from the web page iframe element and the orange circle shows the <i>&#8220;Last&#8221;<\/i> (Blog Course Posting) link which, in this mobile scenario, on an iPad, would use our PHP <i>&#8220;Clayton&#8217;s&#8221;<\/i> cookies system.<\/p>\n<p>We test the new changes deployed on a real iPad device today, the idea of which is more than somewhat verging on great, as you can&#8217;t rely on simulators forever (by the way, with iOS 8 simulators we had <a target=_blank title='Search Google for problem ... thanks' href='https:\/\/www.google.com.au\/search?q=%22An+error+was+encountered+while+running+%28Domain+%3D+DTiPhoneSimulatorErrorDomain%2C+Code+%3D+2%29%22&#038;ie=utf-8&#038;oe=utf-8&#038;aq=t&#038;rls=org.mozilla:en-US:official&#038;client=firefox-a&#038;channel=sb&#038;gfe_rd=cr&#038;ei=An9AVJ2ZGsGN8QfL14DoDA'>problems<\/a> and we needed to consult with <a target=_blank title='iOS version 8 simulator error' href='http:\/\/stackoverflow.com\/questions\/12932750\/ios-simulator-failed-to-install-the-application\/13006893'>this link<\/a> &#8230; where you may notice that we ended up reverting to iOS version 7.1 simulators &#8230; thanks), though the options in this field grow, as you can imagine, because it is impossible to keep up owning all the gadgetry you&#8217;d need as a programmer to test for everything with real devices.   Don&#8217;t confuse this &#8220;middle game&#8221; <i>&#8220;quality assurance&#8221;<\/i> or <i>&#8220;unit test&#8221;<\/i> concept with the concept of an &#8220;end game&#8221; deployment as an Apple App Store app (where there are quite a few extra steps to undertake).  When dealing with real devices you will need:<\/p>\n<ul>\n<li>the device &#8230; doh, chortle, doh, chortle<\/li>\n<li>the Mac OS X laptop that runs Xcode<\/li>\n<li>the white lead that temporarily connects your iPad or iPhone or iPod mobile device with your Mac OS X laptop that runs Xcode<\/li>\n<li>a lack of fear of all things <a target=_blank title='File synchronization information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/File_synchronization'><i>&#8220;sync&#8221;<\/i><\/a><\/li>\n<li>the iTunes device (up arrow eject) button to safely eject the device (similar functionality as Windows icon right-click Eject options (in Windows Explorer))<\/li>\n<\/ul>\n<p>Here is a link to some downloadable PHP programming source code for an iOS Web App&#8217;s UIWebView&#8217;s underlying content, that is used when the platform is a mobile one, while the pre-existant <a target=_blank title='coursecookies.html' href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/coursecookies.html_GETME\">coursecookies.html<\/a> is still okay for non-mobile platforms which still use real cookies:<\/p>\n<ul>\n<li><a target=_blank title='coursecookies.php' href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/coursecookies.php_GETME\">coursecookies.php<\/a><\/li>\n<\/ul>\n<p>&#8230; and there were changes needed for PHP code in wp-content\/themes\/twentyten\/header.php (the bold parts of which are particularly relevent to the last modifications) because it establishes the header Javascript and two sections of code are involved &#8230;<\/p>\n<p><code><br \/>\nvar ourck=location.search.split('ck=')[1] ? location.search.split('ck=')[1].split('&')[0] : '';<br \/>\nvar ourpp=location.search.split('pp=')[1] ? location.search.split('pp=')[1].split('&')[0] : '';<br \/>\nvar ourpn=location.search.split('pn=')[1] ? location.search.split('pn=')[1].split('&')[0] : '';<br \/>\nvar ourpage=location.search.split('page_id=')[1] ? location.search.split('page_id=')[1].split('&')[0] : '';<br \/>\nvar ourp=location.search.split('p=')[1] ? location.search.split('p=')[1].split('&')[0] : '';<br \/>\nvar ourcourseurl='';<br \/>\nvar ourcoursetitle='';<br \/>\n<b><br \/>\nvar ua = navigator.userAgent;<br \/>\nvar isiPad = \/iPad\/i.test(ua) || \/iPhone OS 3_1_2\/i.test(ua) || \/Android\/i.test(ua) || \/iPhone OS 3_2_2\/i.test(ua);<\/p>\n<p>if (isiPad) {<br \/>\n  &lt;?php<br \/>\n             \/\/echo \"n alert('*\" . $_SERVER['REQUEST_URI'] . \"*'); n\";<br \/>\n    if (strpos(($_SERVER['REQUEST_URI'] . \"*\"), \"?p*\") !== false) {<br \/>\n             \/\/echo \"n alert('\" . $_SERVER['QUERY_STRING'] . \"'); n\";<\/p>\n<p>    $cstuffis = \"\";<\/p>\n<p>    $rma = $_SERVER['REMOTE_ADDR'];<br \/>\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);<br \/>\n    \/\/ you can add different browsers with the same way ..<br \/>\n    if(preg_match('\/(chromium)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000000'.$rma;<br \/>\n    elseif(preg_match('\/(chrome)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00000'.$rma;<br \/>\n    elseif(preg_match('\/(safari)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0000'.$rma;<br \/>\n    elseif(preg_match('\/(opera)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000'.$rma;<br \/>\n    elseif(preg_match('\/(msie)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00'.$rma;<br \/>\n    elseif(preg_match('\/(mozilla)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0'.$rma;<\/p>\n<p>            echo \"n alert('\" . $ua . \"'); n\";<\/p>\n<p>        if (file_exists(dirname(__FILE__) . \"\/..\/PHP\/cookie_\" . $rma . \".is\")) {<br \/>\n          $cstuffis = file_get_contents(dirname(__FILE__) . \"\/cookie_\" . $rma . \".is\");<br \/>\n        } else if (file_exists(dirname(__FILE__) . \"\/..\/..\/..\/PHP\/cookie_\" . $rma . \".is\")) {<br \/>\n          $cstuffis = file_get_contents(dirname(__FILE__) . \"\/..\/..\/..\/PHP\/cookie_\" . $rma . \".is\");<br \/>\n        }<\/p>\n<p>        if ($cstuffis != \"\") {<br \/>\n          $actfs = explode(\"lastcourse=\", $cstuffis);<br \/>\n          if (sizeof($actfs) &gt; 1) {<br \/>\n           $aactfs = explode(\";\", $actfs[1]);<br \/>\n           if ($aactfs[0] != \"\") echo \"n location.href = '\" . $aactfs[0] . \"'; n\";<br \/>\n          }<br \/>\n        }<br \/>\n    }<br \/>\n  ?&gt;<br \/>\n}<br \/>\n<\/b><br \/>\n<\/code><\/p>\n<p>&#8230; at the top just under &lt;script type=&#8217;text\/javascript&#8217;&gt; and &#8230;<\/p>\n<p><code><\/p>\n<p>function topViaDelay() {<br \/>\n  parent.scroll(0, 0);<br \/>\n}<\/p>\n<p>function courseCookies() {<br \/>\n<b><br \/>\n  var ext = \".html\";  \/\/ \".php\"<br \/>\n  var extp = \".html?\";  \/\/ \".php\"<br \/>\n  var huhd = new Date();<br \/>\n  if (isiPad) {<br \/>\n    ext = \".php?date=\" + huhd;<br \/>\n    extp = \".php?date=\" + huhd + \"&\";<br \/>\n    if ((ourpp != \"\" || ourpn != \"\") && ourpp != ourp && ourpn != ourp) {<br \/>\n&lt;?php<br \/>\n    if ((isset($_GET['pp']) || isset($_GET['pn']))) {<br \/>\n    if ($_GET['p'] != $_GET['pp'] && $_GET['p'] != $_GET['pn'] && ($_GET['pn'] . $_GET['pp']) != \"\") {<\/p>\n<p>    $rma = $_SERVER['REMOTE_ADDR'];<br \/>\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);<br \/>\n    \/\/ you can add different browsers with the same way ..<br \/>\n    if(preg_match('\/(chromium)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000000'.$rma;<br \/>\n    elseif(preg_match('\/(chrome)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00000'.$rma;<br \/>\n    elseif(preg_match('\/(safari)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0000'.$rma;<br \/>\n    elseif(preg_match('\/(opera)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000'.$rma;<br \/>\n    elseif(preg_match('\/(msie)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00'.$rma;<br \/>\n    elseif(preg_match('\/(mozilla)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0'.$rma;<\/p>\n<p>        if (file_exists(dirname(__FILE__) . \"\/..\/PHP\/coursecookies.html\")) {<br \/>\n          file_put_contents(dirname(__FILE__) . \"\/..\/PHP\/cookie_\" . $rma . \".is\", \"lastcourse=\" . \"http:\/\/\" . $_SERVER['SERVER_NAME'] . \":\" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'] . \"; \");<br \/>\n        } else if (file_exists(dirname(__FILE__) . \"\/..\/..\/..\/..\/PHP\/coursecookies.html\")) {<br \/>\n            \/\/ echo \"n alert('\" . dirname(__FILE__) . \"\/..\/..\/..\/..\/PHP\/coursecookies.html\" . \"'); n\";<br \/>\n          file_put_contents(dirname(__FILE__) . \"\/..\/..\/..\/..\/PHP\/cookie_\" . $rma . \".is\", \"lastcourse=\" . \"http:\/\/\" . $_SERVER['SERVER_NAME'] . \":\" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'] . \"; \");<br \/>\n        }<br \/>\n      }<br \/>\n      }<br \/>\n?&gt;<br \/>\n   }<br \/>\n  }<br \/>\n<\/b><br \/>\n  if (document.URL.indexOf(\"#content\") != -1) {<br \/>\n    setTimeout(topViaDelay, 2000);<br \/>\n  } else {<br \/>\n   if ((ourpp != \"\" || ourpn != \"\") && ourpp != ourp && ourpn != ourp) {<br \/>\n<b><br \/>\n    document.getElementById(\"content\").innerHTML = \"&lt;iframe width=1 height=1 id='myccor' src='\" + document.URL.replace(\"\/wordpress\/?\", \"\/PHP\/coursecookies\" + extp).replace(\"\/wordpress\/\", \"\/PHP\/coursecookies\" + ext)  + \"'&gt;&lt;\/iframe&gt;\" + document.getElementById(\"content\").innerHTML;<br \/>\n<\/b><br \/>\n    setTimeout(topViaDelay, 2000);<br \/>\n   } else {<br \/>\n<b><br \/>\n    document.getElementById(\"content\").innerHTML = \"&lt;iframe width=1 height=1 id='myccor' src='..\/PHP\/coursecookies\" + ext + \"'&gt;&lt;\/iframe&gt;\" + document.getElementById(\"content\").innerHTML;<br \/>\n<\/b><br \/>\n   }<br \/>\n  }<br \/>\n}<\/p>\n<p>&lt;\/script&gt;<br \/>\n&lt;\/head&gt;<\/p>\n<p>&lt;body onload=\"courseCookies();\" &lt;?php body_class(); ?&gt;&gt;<br \/>\n<\/code><\/p>\n<p>&#8230; around  &lt;\/script&gt;<\/p>\n<p><\/code><\/p>\n<\/li>\n<\/ul>\n<p>Thanks for visiting today&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_LastCoursePosting_iOS.jpg\" title=\"Click picture\">tutorial<\/a>.<\/p>\n<hr \/>\n<p id='xlppt'>Previous relevant <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10287' title='Xcode Learning Programming Primer Tutorial'>Xcode Learning Programming Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_iOS.jpeg\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode Learning Programming Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_iOS.jpeg\" title=\"Xcode Learning Programming Primer Tutorial\" id=\"oijximpept\" onmouseover=\" this.src=this.src.replace('.jpg','.JPEG').replace('.jpeg','.GIF').replace('.png','.jpg').replace('.gif','.png').replace('.JPEG','.jpeg').replace('.GIF','.gif');   \" \/><\/a><p class=\"wp-caption-text\">Xcode Learning Programming Primer Tutorial<\/p><\/div>\n<p>Today we make use of the ideas from two previous tutorials called <a target=_blank href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial'>Xcode iOS Dynamic UIButton Primer Tutorial<\/a> as below and <a target=_blank href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial'>Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown way below, covering the Xcode iOS Mobile App issue (ie. the &#8220;UIWebView &#8216;on its lonesome&#8217; issue&#8221;) to create an iOS mobile app for our <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=705' title='Learning Programming Android App'>Learning Programming<\/a> idea extended to include the option of <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10064' title='WordPress Blog Course Design Cookies Tutorial'>Blog Course Postings<\/a>, and using dynamic UIButton to:<\/p>\n<ol>\n<li><a target=_blank href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial' title='See Xcode iOS Dynamic UIButton Primer Tutorial below'>show you<\/a> how to add a dynamic <a target=_blank title='UIButton information from Apple' href='https:\/\/developer.apple.com\/library\/ios\/documentation\/uikit\/reference\/uibutton_class\/index.html'>UIButton<\/a> at loading (if you want to know &#8230; thanks to the great Open Source community for all the ideas emanating from this <a target=_blank title='Dynamic UIButton ideas ... thanks' href='http:\/\/stackoverflow.com\/questions\/1378765\/how-do-i-create-a-basic-uibutton-programmatically'>link<\/a>)<\/li>\n<li>also is one way to solve the UIWebView &#8220;on its lonesome&#8221; issue (when pointing at URLs without total navigational integrity (ie. they have <i>a<\/i> tags with <i>target=&#8217;_blank&#8217;<\/i> for instance)) &#8230; <b>&#8216;(but please know such a scenario is not good without also providing, at least, buttons for the equivalent functionality as the web browser&#8217;s back and forward buttons &#8230; remember, with UIWebView there is no address bar, and no multiple tabs nor windows &#8230; if your webpage has complete forward and backward navigational integrity that could suit a UIWebView <i>&#8220;on its lonesome&#8221;<\/i>)&#8217;<\/b> &#8230; mentioned in <a target=_blank href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial'>Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown below<\/li>\n<\/ol>\n<p id='xmyptoday'>As a general comment about Xcode iOS mobile development (but please note that the idea of step 1. above circumvents the complication &#8230; by the way, the two small red circles in the tutorial <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_iOS.jpeg\" title=\"Click picture\">picture<\/a> are me showing you where the Back and Forward buttons are (rather than the code ) &#8230; now that iOS 8 buttons have no background by default it is sometimes necessary to point them out) you must try to get efficient at the linking (or &#8220;connecting&#8221;) of <i>&#8220;nib&#8221;<\/i> file and\/or <i>&#8220;storyboard&#8221;<\/i> GUI objects to your ViewController.h code and for this, we&#8217;d really like to defer to a YouTube video we mentioned in a tutorial a long time back called <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=105' title='Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator ...'>Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator<\/a> &#8230; since then have worked out, with some web browsers, how to lob you at the exact bit, and am hoping you get <i>straight<\/i> to that <i>bit<\/i> with this <a target=_blank title='How to make iOS Apps - Intro to Xcode 4: Building Your First App' <a target=_blank title='8:54' href='https:\/\/www.youtube.com\/watch?v=Ok70cZEIW3I#t=8m54s'>link<\/a> (please have sound up to hear of role of the &#8220;control&#8221; button &#8220;while dragging&#8221;).  By the way, the green circle shows a new web page link (not the app this time) to link back to the mobile app from the web page iframe element.<\/p>\n<p>We test the change&#8217;s deployment on a real iPad device today, the idea of which is somewhat verging on great, as you can&#8217;t rely on simulators forever (by the way, with iOS 8 simulators we had <a target=_blank title='Search Google for problem ... thanks' href='https:\/\/www.google.com.au\/search?q=%22An+error+was+encountered+while+running+%28Domain+%3D+DTiPhoneSimulatorErrorDomain%2C+Code+%3D+2%29%22&#038;ie=utf-8&#038;oe=utf-8&#038;aq=t&#038;rls=org.mozilla:en-US:official&#038;client=firefox-a&#038;channel=sb&#038;gfe_rd=cr&#038;ei=An9AVJ2ZGsGN8QfL14DoDA'>problems<\/a> and we needed to consult with <a target=_blank title='iOS version 8 simulator error' href='http:\/\/stackoverflow.com\/questions\/12932750\/ios-simulator-failed-to-install-the-application\/13006893'>this link<\/a> &#8230; where you may notice that we ended up reverting to iOS version 7.1 simulators &#8230; thanks), though the options in this field grow, as you can imagine, because it is impossible to keep up owning all the gadgetry you&#8217;d need as a programmer to test for everything with real devices.   Don&#8217;t confuse this &#8220;middle game&#8221; <i>&#8220;quality assurance&#8221;<\/i> or <i>&#8220;unit test&#8221;<\/i> concept with the concept of an &#8220;end game&#8221; deployment as an Apple App Store app (where there are quite a few extra steps to undertake).  When dealing with real devices you will need:<\/p>\n<ul>\n<li>the device &#8230; doh, chortle, doh, chortle<\/li>\n<li>the Mac OS X laptop that runs Xcode<\/li>\n<li>the white lead that temporarily connects your iPad or iPhone or iPod mobile device with your Mac OS X laptop that runs Xcode<\/li>\n<li>a lack of fear of all things <a target=_blank title='File synchronization information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/File_synchronization'><i>&#8220;sync&#8221;<\/i><\/a><\/li>\n<li>the iTunes device (up arrow eject) button to safely eject the device (similar functionality as Windows icon right-click Eject options (in Windows Explorer))<\/li>\n<\/ul>\n<p>Here is a link to some downloadable Xcode (on a Mac laptop) Objective-C programming source code for an iOS Web App which turns this WordPress Blog into a mobile app (of more use than the one of the tutorial below &#8230; because of the addition of two UIButtons for Back and Forward <i><b>UIWebView<\/b><\/i> navigation (as distinct from the website navigation &#8230; ie. the buttons belong to the app, not the website, even though they look as though they could belong to the website)) which you may want to rename to <a target=_blank title='AppDelegate.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/AppDelegate.h_GETME\">AppDelegate.h<\/a>, <a target=_blank title='AppDelegate.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/AppDelegate.m_GETME\">AppDelegate.m<\/a>, <a target=_blank title='ViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/ViewController.h_GETME\">ViewController.h<\/a>, <a target=_blank title='ViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/ViewController.m_GETME\">ViewController.m<\/a> and <a target=_blank title='main.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/main.m_GETME\">main.m<\/a> <\/p>\n<p>What needed to change to integrate Blog Course Postings as extra functionality into the existing Learning Programming software was:<\/p>\n<ul>\n<li>changes to <a target=_blank title='design_a_course.php' href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/design_a_course.php---GETME\">design_a_course.php<\/a> &#8230; to get this into context try reading <a target=_blank title='WordPress Blog Course Design Cookies Tutorial' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10064'>WordPress Blog Course Design Cookies Tutorial<\/a> and <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=705' title='Learning Programming Android App'>Learning Programming Android App<\/a><\/li>\n<li>changes to the Learning Programming landing page as you can see <a target=_blank title='Learning Programming landing page changes' href='http:\/\/www.rjmprogramming.com.au\/PHP\/indexOfLearningProgramming.diffs'>here<\/a><\/li>\n<li>changes to  PHP code in this WordPress Blog&#8217;s document root&#8217;s wp-content\/themes\/twentyten\/functions.php (in bold below &#8230; to get this into context try reading <a target=_blank title='WordPress Blog Course Design Cookies Tutorial' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10064'>WordPress Blog Course Design Cookies Tutorial<\/a>):\n<p><code><\/p>\n<p>if ( ! function_exists( 'may_be_obsolete' ) ) :<br \/>\n\/**<br \/>\n * Truncate unknown previous\/next.<br \/>\n *<br \/>\n * @since October 2014 by RJM Programming<br \/>\n *\/<br \/>\nfunction may_be_obsolete($proposed) {<br \/>\n  if (strpos($proposed, \"&gt;Previous\") !== false) {<br \/>\n    if (strpos(($proposed . \"&\"), \"&pp=&\") !== false) {<br \/>\n      $bitsare = explode(\"&gt;\", $proposed);<br \/>\n      $nums = explode(\"=\", str_replace(\"&\", \"=\", str_replace(\"&pp=\", \"\", str_replace(\"&pn\", \"\", str_replace(\"?p=\", \"\", $proposed)))));<br \/>\n      if ($nums[0] == $nums[1]) {<br \/>\n        $proposed = str_replace($bitsare[sizeof($bitsare) - 1], \"\", $proposed);<br \/>\n      }<br \/>\n    }<br \/>\n  } else if (strpos($proposed, \"&gt;Next\") !== false) {<br \/>\n    if (strpos(($proposed . \"&\"), \"&pn=&\") !== false) {<br \/>\n      $bitsare = explode(\"&gt;\", $proposed);<br \/>\n      $nums = explode(\"=\", str_replace(\"&\", \"=\", str_replace(\"&pn=\", \"\", str_replace(\"&pp\", \"\", str_replace(\"?p=\", \"\", $proposed)))));<br \/>\n      if ($nums[0] == $nums[1]) {<br \/>\n        $proposed = str_replace($bitsare[sizeof($bitsare) - 1], \"\", $proposed);<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n  return $proposed;<br \/>\n}<br \/>\nendif;<\/p>\n<p>if ( ! function_exists( 'get_other_one' ) ) :<br \/>\n\/**<br \/>\n * Get unknown previous\/next.<br \/>\n *<br \/>\n * @since October 2014 by RJM Programming<br \/>\n *\/<br \/>\nfunction get_other_one($proposedp, $onetogetprefix, $onep) {<br \/>\n  if (file_exists(\"..\/PHP\/\" . $proposedp . \"_\" . $_SERVER['REMOTE_ADDR'] . \".npg\")) {<br \/>\n    $prehuh = file_get_contents(\"..\/PHP\/\" . $proposedp . \"_\" . $_SERVER['REMOTE_ADDR'] . \".npg\");<br \/>\n    $xxpa = explode(str_replace(\"&\", \"\", $onetogetprefix), $prehuh);<br \/>\n    $xxpaa = explode(\"&\", $xxpa[sizeof($xxpa) - 1]);<br \/>\n    return $proposedp . $onetogetprefix . $xxpaa[0];<br \/>\n  } else if (file_exists(\"..\/PHP\/\" . $onep . \"_\" . $_SERVER['REMOTE_ADDR'] . \".npg\")) {<br \/>\n    $prehuh = file_get_contents(\"..\/PHP\/\" . $onep . \"_\" . $_SERVER['REMOTE_ADDR'] . \".npg\");<br \/>\n    $xxpa = explode(str_replace(\"&\", \"\", $onetogetprefix), $prehuh);<br \/>\n    $xxpaa = explode(\"&\", $xxpa[sizeof($xxpa) - 1]);<br \/>\n    return $onep . $onetogetprefix . $xxpaa[0];<br \/>\n  }<br \/>\n  $huh = file_get_contents(dirname(__FILE__) . \"\/..\/..\/..\/..\/index.html\");<br \/>\n  if ($proposedp == \"\") {<br \/>\n    $xxp = explode(\"?p=\" . $onep . \"&\", $huh);<br \/>\n    if (sizeof($xxp) &gt; 1) {<br \/>\n      $xxpa = explode(str_replace(\"&\", \"\", $onetogetprefix), $xxp[1]);<br \/>\n      $xxpaa = explode(\"&\", $xxpa[sizeof($xxpa) - 1]);<br \/>\n      return $onep . $onetogetprefix . $xxpaa[0];<br \/>\n    }<br \/>\n    return $onep;<br \/>\n  } else {<br \/>\n    $xxp = explode(\"?p=\" . $proposedp . \"&\", $huh);<br \/>\n    if (sizeof($xxp) &gt; 1) {<br \/>\n      $xxpa = explode(str_replace(\"&\", \"\", $onetogetprefix), $xxp[1]);<br \/>\n      $xxpaa = explode(\"&\", $xxpa[sizeof($xxpa) - 1]);<br \/>\n      return $proposedp . $onetogetprefix . $xxpaa[0];<br \/>\n    }<br \/>\n    return $proposedp;<br \/>\n  }<br \/>\n  return $proposedp;<br \/>\n}<br \/>\nendif;<\/p>\n<p>if ( ! function_exists( 'get_tutorial_topic' ) ) :<br \/>\n\/**<br \/>\n * Get tutorial topic (word).<br \/>\n *<br \/>\n * @since October 2014 by RJM Programming<br \/>\n *\/<br \/>\nfunction get_tutorial_topic($thistopic) {<br \/>\n  $words = explode(\" \", str_replace(\"  \", \"++\", str_replace(\"~~\", \"#~\", $thistopic)));<br \/>\n  if (sizeof($words) &gt; 1) {<br \/>\n    return \" \" . $words[0];<br \/>\n  }<br \/>\n  return \"\";<br \/>\n}<br \/>\nendif;<\/p>\n<p>if ( ! function_exists( 'previous_next' ) ) :<br \/>\n\/**<br \/>\n * Allow for next and previous via &pn= and &pp= respectively.<br \/>\n *<br \/>\n * @since October 2014 by RJM Programming<br \/>\n *\/<br \/>\nfunction previous_next($both = true) {<br \/>\n  if (isset($_GET['pp']) || isset($_GET['pn'])) {<br \/>\n      $prefix = \" id='atop\";<br \/>\n      if ($both) $prefix = \" id='abottom\";<br \/>\n      $topic = \"\";<br \/>\n      $tget = \"\";<br \/>\n<b><br \/>\n          $topsuff = \"\";<br \/>\n          $isuff = \"#content\";<br \/>\n\t  $isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');<br \/>\n\t  if ($isiPad === false) {<br \/>\n  \t\t$isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPhone');<br \/>\n\t  }<br \/>\n\t  if ($isiPad === false) {<br \/>\n  \t\t$isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'Android');<br \/>\n\t  }<br \/>\n          if ($isiPad) $isuff = \"&content=y\";<br \/>\n<\/b><br \/>\n\t  if (isset($_GET['title'])) {<br \/>\n\t\t$tget = \"&title=\" . $_GET['title'];<br \/>\n\t\t$topic = str_replace(\"~\", \" \", get_tutorial_topic(str_replace(\"_\", \" \", $_GET['title'])));<br \/>\n                <b>if ($both) $topsuff = \"&nbsp;&nbsp;&lt;a href='#content' title='Back to \" . str_replace(\"~\", \" \", $_GET['title']) . \"'&gt;^&lt;\/a&gt;&nbsp;&nbsp;\";  <\/b><br \/>\n\t  } else {<br \/>\n        $topic = str_replace(\"~\", \" \", get_tutorial_topic($post-&gt;title));<br \/>\n      }<br \/>\n      if (strpos(($_SERVER['QUERY_STRING'] . \"&\"), \"&pp=&pn=&\") !== false) {<br \/>\n       $prefix = $prefix;<br \/>\n      } else {<br \/>\n       echo \"&lt;table style='width:98%; background-color: #F6F5F1;'&gt;&lt;tbody&gt;&lt;tr&gt;\";<br \/>\n       <b>$cbackto = \"\";<br \/>\n       if (isset($_GET['backto'])) $isuff = \"&content=y\";<br \/>\n       if (isset($_GET['backto'])) $cbackto = \"&backto=\" . urldecode($_GET['backto']);<\/b><br \/>\n       if (isset($_GET['pp'])) {<br \/>\n        <b>echo \"&lt;th&gt;&lt;a\" . $prefix . \"p' target=_blank title='Previous' href='\" . str_replace(\"?\" . $_SERVER['QUERY_STRING'], \"\", $_SERVER['REQUEST_URI']) . \"?p=\" . may_be_obsolete(get_other_one($_GET['pp'], \"&pp=\", $_GET['p']) . \"&pn=\" . $_GET['p'] . $tget . $cbackto . \"'&gt;Previous\" . $topic . \" Suggestion\") . \"&lt;\/a&gt;\" . $topsuff . \"&lt;\/th&gt;\";<br \/>\n             $topsuff = \"\";<\/b><br \/>\n       }<br \/>\n       if (isset($_GET['pn'])) {<br \/>\n        <b>echo \"&lt;th&gt;\" . $topsuff . \"&lt;a\" . $prefix . \"n' target=_blank title='Next' href='\" . str_replace(\"?\" . $_SERVER['QUERY_STRING'], \"\", $_SERVER['REQUEST_URI']) . \"?p=\" . may_be_obsolete(get_other_one($_GET['pn'], \"&pn=\", $_GET['p']) . \"&pp=\" . $_GET['p'] . $tget . $cbackto . \"'&gt;Next\" . $topic . \" Suggestion\") . \"&lt;\/a&gt;&lt;th&gt;\"; <\/b><br \/>\n       }<br \/>\n       <b>if (isset($_GET['backto'])) echo \"&lt;th&gt;&lt;a target=_top href='\" . urldecode($_GET['backto']) . \"' title='Back to Learning Programming'&gt;Learning Programming&lt;\/a&gt;&lt;\/th&gt;\"; <\/b><br \/>\n       if ($both) {<br \/>\n        echo \"&lt;\/tr&gt;&lt;tr&gt;\";<br \/>\n        if (isset($_GET['pp'])) {<br \/>\n         <b>echo \"&lt;td&gt;&lt;iframe src='\" . str_replace(\"?\" . $_SERVER['QUERY_STRING'], \"\", $_SERVER['REQUEST_URI']) . \"?p=\" . $_GET['pp'] . $isuff . \"' width=400 height=800&gt;&lt;\/iframe&gt;&lt;\/td&gt;\"; <\/b><br \/>\n        }<br \/>\n        if (isset($_GET['pn'])) {<br \/>\n         <b>echo \"&lt;td&gt;&lt;iframe src='\" . str_replace(\"?\" . $_SERVER['QUERY_STRING'], \"\", $_SERVER['REQUEST_URI']) . \"?p=\" . $_GET['pn'] . $isuff . \"' width=400 height=800&gt;&lt;\/iframe&gt;&lt;\/td&gt;\"; <\/b><br \/>\n        }<br \/>\n        <b>echo \"&lt;td&gt;&lt;a href='#content' title='Back to \" . $topic . \"'&gt;\" . $topic . \"&lt;\/a>&lt;\/td&gt;\"; <\/b><br \/>\n      }<br \/>\n      echo \"&lt;\/tr&gt;&lt;\/tbody&gt;&lt;\/table&gt;\";<br \/>\n      }<br \/>\n  }<br \/>\n}<br \/>\nendif;<\/p>\n<p><\/code><\/p>\n<\/li>\n<\/ul>\n<p>Thanks for visiting today&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_iOS.jpeg\" title=\"Click picture\">tutorial<\/a>.<\/p>\n<hr \/>\n<p id='xidupt'>Previous relevant <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10239' title='Xcode iOS Dynamic UIButton Primer Tutorial'>Xcode iOS Dynamic UIButton Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/iOS_Dynamic_Buttons.png\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode iOS Dynamic UIButton Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/iOS_Dynamic_Buttons.png\" title=\"Xcode iOS Dynamic UIButton Primer Tutorial\" id=\"ijximpept\" onmouseover=\" this.src=this.src.replace('.jpg','.PNG').replace('.png','.jpg').replace('.PNG','.png');   \" \/><\/a><p class=\"wp-caption-text\">Xcode iOS Dynamic UIButton Primer Tutorial<\/p><\/div>\n<p>Today we come at an Xcode iOS Mobile App issue (ie. the &#8220;UIWebView &#8216;on its lonesome&#8217; issue&#8221; &#8230; codename <a target=_blank href='https:\/\/www.youtube.com\/watch?v=6iaz0GIlSzM' title='All four letter acronym mean something ... do not you agree, my liege?'>Uiol<\/a>) from two sides:<\/p>\n<ol>\n<li>to show you how to add a dynamic <a target=_blank title='UIButton information from Apple' href='https:\/\/developer.apple.com\/library\/ios\/documentation\/uikit\/reference\/uibutton_class\/index.html'>UIButton<\/a> at loading (if you want to know &#8230; thanks to the great Open Source community for all the ideas emanating from this <a target=_blank title='Dynamic UIButton ideas ... thanks' href='http:\/\/stackoverflow.com\/questions\/1378765\/how-do-i-create-a-basic-uibutton-programmatically'>link<\/a>)<\/li>\n<li>also is one way to solve the UIWebView &#8220;on its lonesome&#8221; issue (when pointing at URLs without total navigational integrity (ie. they have <i>a<\/i> tags with <i>target=&#8217;_blank&#8217;<\/i> for instance)) &#8230; <b>&#8216;(but please know such a scenario is not good without also providing, at least, buttons for the equivalent functionality as the web browser&#8217;s back and forward buttons &#8230; remember, with UIWebView there is no address bar, and no multiple tabs nor windows &#8230; if your webpage has complete forward and backward navigational integrity that could suit a UIWebView <i>&#8220;on its lonesome&#8221;<\/i>)&#8217;<\/b> &#8230; mentioned in <a target=_blank href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial'>Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown below<\/li>\n<\/ol>\n<p id='myptoday'>As a general comment about Xcode iOS mobile development (but please note that the idea of step 1. above circumvents the complication &#8230; by the way, the two small yellow circles in the tutorial <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/iOS_Dynamic_Buttons.png\" title=\"Click picture\">picture<\/a> are me showing you where the Back and Forward buttons are (rather than the code (which is still stuck on working out how to make toast in the morning before you get up, even before you thought you knew you wanted it &#8230; codename <a href='#myptoday' onclick=' alert(\"Does not compute ... chortle, chortle\"); '><i>Wohtmtitmbygu_Ebutykywi<\/i><\/a>)) &#8230; now that iOS 8 buttons have no background by default it is sometimes necessary to point them out) you must try to get efficient at the linking (or &#8220;connecting&#8221;) of <i>&#8220;nib&#8221;<\/i> file and\/or <i>&#8220;storyboard&#8221;<\/i> GUI objects to your ViewController.h code and for this, we&#8217;d really like to defer to a YouTube video we mentioned in a tutorial a long time back called <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=105' title='Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator ...'>Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator<\/a> &#8230; since then have worked out, with some web browsers, how to lob you at the exact bit, and am hoping you get <i>straight<\/i> to that <i>bit<\/i> with this <a target=_blank title='How to make iOS Apps - Intro to Xcode 4: Building Your First App' <a target=_blank title='8:54' href='https:\/\/www.youtube.com\/watch?v=Ok70cZEIW3I#t=8m54s'>link<\/a> (please have sound up to hear of role of the &#8220;control&#8221; button &#8220;while dragging&#8221;).<\/p>\n<p>We test the change&#8217;s deployment on a real iPad device today, the idea of which is somewhat verging on great, as you can&#8217;t rely on simulators forever, though the options in this field grow, as you can imagine, because it is impossible to keep up owning all the gadgetry you&#8217;d need as a programmer to test for everything with real devices.   Don&#8217;t confuse this &#8220;middle game&#8221; <i>&#8220;quality assurance&#8221;<\/i> or <i>&#8220;unit test&#8221;<\/i> concept with the concept of an &#8220;end game&#8221; deployment as an Apple App Store app (where there are quite a few extra steps to undertake).  When dealing with real devices you will need:<\/p>\n<ul>\n<li>the device &#8230; doh, chortle, doh, chortle<\/li>\n<li>the Mac OS X laptop that runs Xcode<\/li>\n<li>the white lead that temporarily connects your iPad or iPhone or iPod mobile device with your Mac OS X laptop that runs Xcode<\/li>\n<li>a lack of fear of all things <a target=_blank title='File synchronization information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/File_synchronization'><i>&#8220;sync&#8221;<\/i><\/a><\/li>\n<li>the iTunes device (up arrow eject) button to safely eject the device (similar functionality as Windows icon right-click Eject options (in Windows Explorer))<\/li>\n<\/ul>\n<p>Here is a link to some downloadable Xcode (on a Mac laptop) Objective-C programming source code for an iOS Web App which turns this WordPress Blog into a mobile app (of more use than the one of the tutorial below &#8230; because of the addition of two UIButtons for Back and Forward <i><b>UIWebView<\/b><\/i> navigation (as distinct from the website navigation &#8230; ie. the buttons belong to the app, not the website, even though they look as though they could belong to the website)) which you may want to rename to <a target=_blank title='AppDelegate.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/AppDelegate.h_GETME\">AppDelegate.h<\/a>, <a target=_blank title='AppDelegate.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/AppDelegate.m_GETME\">AppDelegate.m<\/a>, <a target=_blank title='ViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.h_GETME\">ViewController.h<\/a>, <a target=_blank title='ViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.m-GETME\">ViewController.m<\/a> and <a target=_blank title='main.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/main.m_GETME\">main.m<\/a> <\/p>\n<p>The only code that needed to change for <i>Dynamic UIButton purposes<\/i> is described via the link &#8230; <a target=_blank title='ViewController.m' href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.m-GETME'>ViewController.m<\/a><\/p>\n<hr \/>\n<p id='ximpept'>Previous relevant <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10082' title='Xcode iOS Mobile Project Exporting Primer Tutorial'>Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode iOS Mobile Project Exporting Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/Xcode_iOS_Project_Exporting-72of.jpg\" title=\"Xcode iOS Mobile Project Exporting Primer Tutorial\" id=\"iximpept\" onmouseover=\" this.src=this.src.replace('-99of.jpg','-64of.JPG').replace('-64of.jpg','-72of.JPG').replace('-72of.jpg','-99of.JPG').replace('.JPG','.jpg');   \" \/><\/a><p class=\"wp-caption-text\">Xcode iOS Mobile Project Exporting Primer Tutorial<\/p><\/div>\n<p>The Xcode <a target=_blank title='IDE information from Wikipedia' href='http:\/\/en.wikipedia.org\/wiki\/Integrated_development_environment'>IDE<\/a>, like many IDEs, holds that special fascination for the occasions when you, the user, (or youse, the users (chortle, chortle)) can go <i>&#8220;File->New Project&#8221;<\/i> as we showed, below, with the previous <a target=_blank href='#xiuapt' title='Xcode iOS Utility Application Primer Tutorial'>Xcode iOS Utility Application Primer Tutorial<\/a>.   With a couple more button presses the user will feel that satisfaction of making the fastest progress they can expect to ever feel progressing on a project.   Today, though, we take that a little further along and say <i>&#8220;we&#8217;ve got this Xcode iOS Mobile Project that we would like to &#8216;clone&#8217; into a new project with a few tweaks because it is so close to what we want&#8221;<\/i>.   So you look around the <i>File<\/i> menu for mention of the word <i>Export<\/i>, as a first instinct, and, lo and behold it isn&#8217;t there &#8230; boo hoo.   So we go off and find this very <a target=_blank title='Useful link ... look for advice of Diago' href='http:\/\/stackoverflow.com\/questions\/4746557\/save-export-the-whole-project-in-xcode'>useful link<\/a>, from which we &#8220;cherry pick&#8221; Diago&#8217;s advice, because it is all &#8220;d\u00e9j\u00e0 vu&#8221; all over again for me, and think we&#8217;ve gone through this mild pain before &#8230; thanks.<\/p>\n<p id='mypback'>Do all the workings of <i>&#8220;nib&#8221;<\/i> files and\/or <i>&#8220;storyboards&#8221;<\/i> come across? &#8230; Well, I hate to give away too many surprises so if you want to find out for yourself, view the <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/\" title=\"Click picture\">tutorial<\/a>, and\/or have a sneak peek <a href=\"#mypback\" onclick=\" alert('Yes'); \">?<\/a><\/p>\n<p>Today, we show how, with the <a target=_blank title='Xcode IDE information from Apple' href='https:\/\/developer.apple.com\/technologies\/tools\/'>Xcode<\/a> IDE and a bit of work the creation of a <a target=_blank title='Mobile app information from Wikipedia' href='http:\/\/en.wikipedia.org\/wiki\/Mobile_app'>mobile application<\/a> showing the use of a <a target=_blank title='UIWebView information from Apple' href='https:\/\/developer.apple.com\/library\/ios\/documentation\/Uikit\/reference\/UIWebView_Class\/index.html'>UIWebView<\/a>, the contents being this WordPress Blog (but please know such a scenario is not good without also providing, at least, buttons for the equivalent functionality as the web browser&#8217;s back and forward buttons &#8230; remember, with UIWebView there is no address bar, and no multiple tabs nor windows &#8230; if your webpage has complete forward and backward navigational integrity that could suit a UIWebView <i>&#8220;on its lonesome&#8221;<\/i>).<\/p>\n<p>And today we show you some steps in deploying it to an iPad &#8230; say some steps, because it ignores all the first steps regarding registering with Apple as an <a target=_blank title='Apple iOS Developer Program' href='https:\/\/developer.apple.com\/programs\/ios\/'>iOS Developer<\/a> and getting your iPad registered as a development device associated with your iOS Developer Account (accessible by its associated <a target=_blank title='Apple ID information from Apple' href='https:\/\/appleid.apple.com\/'>Apple ID<\/a>) &#8230; your (provisioning) profile &#8230; because this had already been done with the iPad involved &#8230; but if you are into &#8220;thrills and spills&#8221; (it wasn&#8217;t quite as straightforward as shown) take a geek at the upgrade of the iPad&#8217;s iOS (operating system) to 8.0.2 and Xcode (on the laptop) to an SDK to suit iOS 8 &#8230; the &#8220;it&#8217;s a great bag of fruit, it&#8217;s a <a target=_blank title=\"It's really there, if you look!\" href='http:\/\/www2b.abc.net.au\/science\/k2\/stn\/archives\/archive54\/newposts\/476\/topic476381.shtm'><strike>Silvertex<\/strike><\/a> iOS 8 suit&#8221; &#8230; very lame chortle, very lame chortle.<\/p>\n<p>So, as with Android development, all this is like the <i>&#8220;middle game&#8221;<\/i> that we talked about in Android development, and put into context with <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=2377' title='Eclipse Android App Google Play Ready Primer Tutorial'>Eclipse Android App Google Play Ready Primer Tutorial<\/a> &#8230; with mobile development there are not so big &#8220;start games&#8221;, big to huge &#8220;middle games&#8221; and big &#8220;end games&#8221; (less big with Android &#8220;end games&#8221;).<\/p>\n<p>As a general comment about Xcode iOS mobile development you must try to get efficient at the linking (or &#8220;connecting&#8221;) of <i>&#8220;nib&#8221;<\/i> file and\/or <i>&#8220;storyboard&#8221;<\/i> GUI objects to your ViewController.h code and for this, we&#8217;d really like to defer to a YouTube video we mentioned in a tutorial a long time back called <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=105' title='Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator ...'>Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator<\/a> &#8230; since then have worked out, with some web browsers, how to lob you at the exact bit, and am hoping you get <i>straight<\/i> to that <i>bit<\/i> with this <a target=_blank title='How to make iOS Apps - Intro to Xcode 4: Building Your First App' <a target=_blank title='8:54' href='https:\/\/www.youtube.com\/watch?v=Ok70cZEIW3I#t=8m54s'>link<\/a> (please have sound up to hear of role of the &#8220;control&#8221; button &#8220;while dragging&#8221;).<\/p>\n<p>This deployment to real devices, of course, is great, as you can&#8217;t rely on simulators forever, though the options in this field grow, as you can imagine, because it is impossible to keep up owning all the gadgetry you&#8217;d need as a programmer to test for everything with real devices.   Don&#8217;t confuse this &#8220;middle game&#8221; <i>&#8220;quality assurance&#8221;<\/i> or <i>&#8220;unit test&#8221;<\/i> concept with the concept of an &#8220;end game&#8221; deployment as an Apple App Store app (where there are quite a few extra steps to undertake).  When dealing with real devices you will need:<\/p>\n<ul>\n<li>the device &#8230; doh, chortle, doh, chortle<\/li>\n<li>the Mac OS X laptop that runs Xcode<\/li>\n<li>the white lead that temporarily connects your iPad or iPhone or iPod mobile device with your Mac OS X laptop that runs Xcode<\/li>\n<li>a lack of fear of all things <a target=_blank title='File synchronization information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/File_synchronization'><i>&#8220;sync&#8221;<\/i><\/a><\/li>\n<li>the iTunes device (up arrow eject) button to safely eject the device (similar functionality as Windows icon right-click Eject options (in Windows Explorer))<\/li>\n<\/ul>\n<p>Here is a link to some downloadable Xcode (on a Mac laptop) Objective-C programming source code which you may want to rename to <a target=_blank title='AppDelegate.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/AppDelegate.h_GETME\">AppDelegate.h<\/a>, <a target=_blank title='AppDelegate.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/AppDelegate.m_GETME\">AppDelegate.m<\/a>, <a target=_blank title='ViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.h_GETME\">ViewController.h<\/a>, <a target=_blank title='ViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.m_GETME\">ViewController.m<\/a> and <a target=_blank title='main.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/main.m_GETME\">main.m<\/a> <\/p>\n<hr \/>\n<p id='xiuapt'>Previous relevant <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=5855' title='Xcode iOS Utility Application Primer Tutorial'>Xcode iOS Utility Application Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode iOS Utility Application Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/UtilityApplication_99of.jpg\" title=\"Xcode iOS Utility Application Primer Tutorial\" \/><\/a><p class=\"wp-caption-text\">Xcode iOS Utility Application Primer Tutorial<\/p><\/div>\n<p>The Xcode <a target=_blank title='IDE information from Wikipedia' href='http:\/\/en.wikipedia.org\/wiki\/Integrated_development_environment'>IDE<\/a>, like many IDEs, holds that special fascination for the occasions when you, the user, (or youse, the users (chortle, chortle)) can go <i>&#8220;File->New Project&#8221;<\/i>.   With a couple more button presses the user will feel that satisfaction of making the fastest progress they can expect to ever feel progressing on a project.<\/p>\n<p>This great feeling is well worth it, as long as the user doesn&#8217;t fall into the &#8220;post FNP navel gazing&#8221; period.<\/p>\n<p>Today, we show how, with the <a target=_blank title='Xcode IDE information from Apple' href='https:\/\/developer.apple.com\/technologies\/tools\/'>Xcode<\/a> IDE and a few button presses, with no coding (yet), the user can achieve giant leaps in their Xcode iOS Utility <a target=_blank title='Mobile app information from Wikipedia' href='http:\/\/en.wikipedia.org\/wiki\/Mobile_app'>mobile application<\/a>.<\/p>\n<p>IDEs are worth discussing in relation to pros and cons with respect to this:<\/p>\n<p>Pros are &#8230;<\/p>\n<ol>\n<li>speed of initial progress<\/li>\n<li>the clarity you get to do with the design aspects of seeing what you have after the initial non-coding FNP phase<\/li>\n<li>the main files you will ever need have been created in the right places with the correct permissions, etcetera<\/li>\n<li>any makefiles required will have been created and any additional files added will be handled by the IDE as far as keeping the (underlying) makefile up to date<\/li>\n<li>there is online help with IDE procedures and search engines are good with your IDE keyword<\/li>\n<li>multi-device scenarios catered for<\/li>\n<li>debugging facilities are great<\/li>\n<\/ol>\n<p>Cons might be <span style=\"color: red;\">(my argument is that you can control lots of these with awareness)<\/span> &#8230;<\/p>\n<ol>\n<li>what to do after speed of initial progress (&#8220;post FNP navel gazing&#8221;?), and the hard slog begins <span style=\"color: red;\">(take some time between this and your next bit of work planning the first few more important bits of the &#8220;hard slog&#8221; to do)<\/span><\/li>\n<li>the design has a lot of similarities to other products &#8220;out there&#8221; <span style=\"color: red;\">(plan for some things you want to do that can be done in a variety of ways and pick a way that you have never tried before, if applicable)<\/span><\/li>\n<li>you may have lost that intimate awareness of where each file is and what its role is for your project <span style=\"color: red;\">(go to the Finder or Windows Explorer or other, and locate your project, and see what&#8217;s there, now, preferably)<\/span><\/li>\n<li>you lack intimate understanding of how to compile your code when it comes to porting it to another environment <span style=\"color: red;\">(the next IDE along, if applicable, may help with this (we hope))<\/span><\/li>\n<li>the relationship of code to GUI can be baffling <span style=\"color: red;\">(practice the GUI to code linkage points, and look around more when succeeding, and remember that the more you practice the better you get)<\/span><\/li>\n<li>the diversity of choice of environment is sometimes unnecessary and confusing <span style=\"color: red;\">(this is worth putting up with, especially as the more scenarios you test, the more solid your project is)<\/span><\/li>\n<li>you may debug your way to a less efficient and elegant solution <span style=\"color: red;\">(leave debugging to only deeply embedded issues or problems, rather than using it in any way like a design tool)<\/span><\/li>\n<\/ol>\n<p>Think Pro 2. on its own, makes it worth while to use IDEs, as you can see what is behind you and ahead of you, and it helps you envisage the <i>&#8220;big picture&#8221;<\/i> of what you want to achieve overall.<\/p>\n<p>Here is a link to some downloadable Xcode (on a Mac laptop) Objective-C programming source code which you may want to rename to <a target=_blank title='AppDelegate.h' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/AppDelegate.h_GETME\">AppDelegate.h<\/a>, <a target=_blank title='AppDelegate.m' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/AppDelegate.m_GETME\">AppDelegate.m<\/a>, <a target=_blank title='MainViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/MainViewController.h_GETME\">MainViewController.h<\/a>, <a target=_blank title='MainViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/MainViewController.m_GETME\">MainViewController.m<\/a>, <a target=_blank title='FlipsideViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/FlipsideViewController.h_GETME\">FlipsideViewController.h<\/a>, <a target=_blank title='FlipsideViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/FlipsideViewController.m_GETME\">FlipsideViewController.m<\/a> and <a target=_blank title='main.m' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/main.m_GETME\">main.m<\/a> <\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d5855' onclick='var dv=document.getElementById(\"d5855\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?s=Objective-C\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d5855' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10082' onclick='var dv=document.getElementById(\"d10082\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?s=iOS\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10082' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10239' onclick='var dv=document.getElementById(\"d10239\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=UIButton\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10239' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10287' onclick='var dv=document.getElementById(\"d10287\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=mobile\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10287' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10320' onclick='var dv=document.getElementById(\"d10320\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=cookies\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10320' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10396' onclick='var dv=document.getElementById(\"d10396\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=software-integration\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10396' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Today we revisit and build on the ideas from two previous tutorials called Xcode iOS Dynamic UIButton Primer Tutorial as below and Xcode iOS Mobile Project Exporting Primer Tutorial as shown way way below, covering the Xcode iOS Mobile App &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/quiz-software-integration-into-blog-courses-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,37],"tags":[151,267,354,376,377,576,652,932,997,1022,1168,1319,1325,1456],"class_list":["post-10396","post","type-post","status-publish","format-standard","hentry","category-elearning","category-tutorials","tag-blog","tag-course","tag-dom","tag-education","tag-elearning","tag-html","tag-javascript","tag-php","tag-programming","tag-quiz","tag-software-integration","tag-tutorial","tag-twentyten-theme","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/10396"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=10396"}],"version-history":[{"count":0,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/10396\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=10396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=10396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=10396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}