<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4160593805760028247</id><updated>2026-10-06T05:38:46.494-07:00</updated><title type='text'>Development blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-2520592932348681916</id><published>2019-09-05T08:57:00.002-07:00</published><updated>2019-09-05T09:08:56.989-07:00</updated><title type='text'>AWS Lambda function for Fibonacci recursive function</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Here I will show you how to run a simple recursive function in AWS lambda.&lt;br /&gt;
&lt;br /&gt;
1) Login to AWS console.&lt;br /&gt;
2) Select Lambda from services menu.&lt;br /&gt;
3) Select &quot;Create Function&quot; button on the page.&lt;br /&gt;
4) Select &quot;Author from scratch&quot; option and enter the function details as shown in the screenshot.&lt;br /&gt;
&amp;nbsp;Provide a name to your function, select Python 3.7 in the runtime and choose the option to &quot;Create a new role with basic Lambda permissions&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjV4mKbkcMLi_hKPiBIyIQG-KJXPYbsWFvocvZklG9lib1C5_-aN9I1sPjqXJa6ThMdiKQODgqziCLBloHvjvYs_cumrnLkYnUoecOlrsrr73YWJ_szdhpUtbi6vGvfi4AtN0DGGOtGpnI/s1600/fibonacci1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;722&quot; data-original-width=&quot;1600&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjV4mKbkcMLi_hKPiBIyIQG-KJXPYbsWFvocvZklG9lib1C5_-aN9I1sPjqXJa6ThMdiKQODgqziCLBloHvjvYs_cumrnLkYnUoecOlrsrr73YWJ_szdhpUtbi6vGvfi4AtN0DGGOtGpnI/s400/fibonacci1.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) This will create the function and bring up the following screen with the ARN displaying on top right.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxQoh-g_VuxzQRTHfLCo-PeDlfy5HxzTvK1taQSEukpGKaFxQt206HB9pOsHvH-Y0KEQ8AESOsYhQkllZum1tND5OcHwlw9vZVXiyXGpTxRdjAGrzRlv-ijNVy9WnCAF0cEA-Ei2uzUGtJ/s1600/fibonacci2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;570&quot; data-original-width=&quot;1237&quot; height=&quot;183&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxQoh-g_VuxzQRTHfLCo-PeDlfy5HxzTvK1taQSEukpGKaFxQt206HB9pOsHvH-Y0KEQ8AESOsYhQkllZum1tND5OcHwlw9vZVXiyXGpTxRdjAGrzRlv-ijNVy9WnCAF0cEA-Ei2uzUGtJ/s400/fibonacci2.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Paste the following code in the code editor. This code is to calculate a fibincacci for a passed in number.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;import json&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;def lambda_handler(event, context):&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; return getFibonacci(event.get(&quot;item&quot;));&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;#return result;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;def getFibonacci(n):&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; if(n == 0):&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 0&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; else:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(n == 1):&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return n&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(n &amp;gt; 1):&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return getFibonacci(n-1) + getFibonacci(n-2)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code is also available at&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://github.com/singadi/awslambda/blob/master/pythonFibonacci.py&quot; target=&quot;_blank&quot;&gt;https://github.com/singadi/awslambda/blob/master/pythonFibonacci.py&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
7) Testing&lt;br /&gt;
Configure a test event by selecting the test event from the dropdown as show below.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2rEvUpG8X-c1lSUvHJuQoEGPFMH-p4drPTAxbxzUQUfaNrruYM-LswTK1A-Bwin-CxOYOIfljLcB0TKNrXgX2NmEIVGPismJtaMIl280UnXbFNNleldcytjTRe_3ovHlO2j-ypBuwiJ91/s1600/fibonacci3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;354&quot; data-original-width=&quot;1225&quot; height=&quot;92&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2rEvUpG8X-c1lSUvHJuQoEGPFMH-p4drPTAxbxzUQUfaNrruYM-LswTK1A-Bwin-CxOYOIfljLcB0TKNrXgX2NmEIVGPismJtaMIl280UnXbFNNleldcytjTRe_3ovHlO2j-ypBuwiJ91/s320/fibonacci3.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the test event as show&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXaxREU2zyFpPO5DrJTlO7K5BoJsGXXotFjv8abI-YEeuo72EGKx0f4dOVZ7AOzjML40xesEIw_tWihE44-eS9x_1TVAi6NN4z1qTVToHsraVMp13FdvqcqO72B02T4kfwjwCWyC6IDcfE/s1600/fibonacci4.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;372&quot; data-original-width=&quot;719&quot; height=&quot;165&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXaxREU2zyFpPO5DrJTlO7K5BoJsGXXotFjv8abI-YEeuo72EGKx0f4dOVZ7AOzjML40xesEIw_tWihE44-eS9x_1TVAi6NN4z1qTVToHsraVMp13FdvqcqO72B02T4kfwjwCWyC6IDcfE/s320/fibonacci4.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
8) Select this new test event and test your function. You should see the following in your execution result log.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKkR7t-zlLKH8bTeFnt3iV1NjkOWtxTqaGvzwLjkXll8OQSwayjuqOB36XFzk0Si2pAnafIUtifVBlw_h27Wm2dMNIpOS4iXhQwTu3xxouNjf5-QaS4rILZctdk0i6Hj-UrVFK-eq4m4I1/s1600/fibonacci5.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;240&quot; data-original-width=&quot;1001&quot; height=&quot;76&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKkR7t-zlLKH8bTeFnt3iV1NjkOWtxTqaGvzwLjkXll8OQSwayjuqOB36XFzk0Si2pAnafIUtifVBlw_h27Wm2dMNIpOS4iXhQwTu3xxouNjf5-QaS4rILZctdk0i6Hj-UrVFK-eq4m4I1/s320/fibonacci5.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hope this helps you with creating a simple AWS lambda function.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/2520592932348681916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2019/09/aws-lambda-function-for-fibonacci.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/2520592932348681916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/2520592932348681916'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2019/09/aws-lambda-function-for-fibonacci.html' title='AWS Lambda function for Fibonacci recursive function'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjV4mKbkcMLi_hKPiBIyIQG-KJXPYbsWFvocvZklG9lib1C5_-aN9I1sPjqXJa6ThMdiKQODgqziCLBloHvjvYs_cumrnLkYnUoecOlrsrr73YWJ_szdhpUtbi6vGvfi4AtN0DGGOtGpnI/s72-c/fibonacci1.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-3630087336142511073</id><published>2019-06-26T09:39:00.000-07:00</published><updated>2019-06-26T09:39:00.610-07:00</updated><title type='text'>Binary Search Tree insert in Python</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Here is an implementation for Binary Search Tree insert using Python.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/singadi/Python-Code/blob/master/BinaryTreeInsert.py&quot;&gt;https://github.com/singadi/Python-Code/blob/master/BinaryTreeInsert.py&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/3630087336142511073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2019/06/binary-search-tree-insert-in-python.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/3630087336142511073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/3630087336142511073'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2019/06/binary-search-tree-insert-in-python.html' title='Binary Search Tree insert in Python'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-4866655576164969183</id><published>2019-06-26T09:14:00.000-07:00</published><updated>2019-06-26T09:14:11.943-07:00</updated><title type='text'>Binary Search in Python</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Follow this link for implementing a binary search using Python.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/singadi/Python-Code/blob/master/BinarySearch.py&quot;&gt;https://github.com/singadi/Python-Code/blob/master/BinarySearch.py&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/4866655576164969183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2019/06/binary-search-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/4866655576164969183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/4866655576164969183'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2019/06/binary-search-in-python.html' title='Binary Search in Python'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-3786917239823206393</id><published>2011-07-21T14:04:00.000-07:00</published><updated>2011-07-21T14:04:47.309-07:00</updated><title type='text'>iAdd sample for Monotouch app.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;This sample shows how to display a banner Add on a montouch app.&lt;br /&gt;
I&#39;m using a simple example to show the use of AdBannerView control.&lt;br /&gt;
Create a sample Iphone Navigation-based project from Monodevelop. &lt;br /&gt;
In Main.cs/AppDelegate class/FinishedLaunching() method add the following code.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
        ADBannerView banner = new ADBannerView(); 
        banner.CurrentContentSizeIdentifier = &quot;ADBannerContentSizePortrait&quot;;
        banner.AdLoaded += delegate(object sender, EventArgs e) {
        banner.Hidden = false;
        };
        banner.FailedToReceiveAd += delegate(object sender, AdErrorEventArgs e) {
        banner.Hidden = true;
        };
        banner.Frame = new System.Drawing.RectangleF(0, 30, 320, 50);
        navigationController.Add(banner);
        window.AddSubview (navigationController.View);
        window.MakeKeyAndVisible ();
        return true;
}
&lt;/pre&gt;&lt;br /&gt;
The banner must be set to &quot;ADBannerContentSizePortrait&quot; or &quot;ADBannerContentSizeLandscape&quot; using CurrentContentSizeIdentifier property. In this example I&#39;m only targeting portrait layout.&lt;br /&gt;
There are two delegates associated with the banner. &lt;br /&gt;
FailedToReceiveAd - This is when there is no connection between the app and the iAdd server, the banner is hidden in this case.&lt;br /&gt;
AdLoaded - When the iAdd server sends the Add content to display, this is then showed on the Add.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsFxkqWWrV6y5Y0ecCUo_UBL11UiY0uAM1iUkCPpntNF5ZjNRPnMGCymO0iAswLV-uCkwazKn1HdvmpkvdVILeoPeULLrMxjd46q2509JutBfs40-un9tc2InC6pGxBBSxCQEzFAopuoob/s1600/Screen+shot+2011-07-21+at+3.52.51+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsFxkqWWrV6y5Y0ecCUo_UBL11UiY0uAM1iUkCPpntNF5ZjNRPnMGCymO0iAswLV-uCkwazKn1HdvmpkvdVILeoPeULLrMxjd46q2509JutBfs40-un9tc2InC6pGxBBSxCQEzFAopuoob/s320/Screen+shot+2011-07-21+at+3.52.51+PM.png&quot; width=&quot;220&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/3786917239823206393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2011/07/iadd-sample-for-monotouch-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/3786917239823206393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/3786917239823206393'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2011/07/iadd-sample-for-monotouch-app.html' title='iAdd sample for Monotouch app.'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsFxkqWWrV6y5Y0ecCUo_UBL11UiY0uAM1iUkCPpntNF5ZjNRPnMGCymO0iAswLV-uCkwazKn1HdvmpkvdVILeoPeULLrMxjd46q2509JutBfs40-un9tc2InC6pGxBBSxCQEzFAopuoob/s72-c/Screen+shot+2011-07-21+at+3.52.51+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-237523118447495935</id><published>2011-02-01T09:29:00.000-08:00</published><updated>2011-06-27T20:05:12.966-07:00</updated><title type='text'>Hide Right Bar(EDIT) Button of MoreNavigationController of a UITabBarController using Monotouch</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;To remove the Edit button from the &quot;More&quot; Navigation controller in a UITabBarController as shown.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX2EEk3t0fc5WqtKcUlT2Tn1KGZVDDMyAHtDEjjh_7zcNrM9cuI8a-Z-qOnOu4TwsEMyj6Oa4wZm_VQHcwBeKjYC2stlnC-iroCupFAGEkSWgJ1qj5I4Qw8lGJy62q81Cl_jesk7msf_-N/s1600/Screen+shot+2011-02-01+at+10.07.23+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX2EEk3t0fc5WqtKcUlT2Tn1KGZVDDMyAHtDEjjh_7zcNrM9cuI8a-Z-qOnOu4TwsEMyj6Oa4wZm_VQHcwBeKjYC2stlnC-iroCupFAGEkSWgJ1qj5I4Qw8lGJy62q81Cl_jesk7msf_-N/s400/Screen+shot+2011-02-01+at+10.07.23+AM.png&quot; width=&quot;260&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;First assign a delegate class to the instance of the MoreNavigatioController in the AppDelegate class&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;tabBarController.MoreNavigationController.Delegate = new MoreNavigationControllerDelegate();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;public partial class AppDelegate : UIApplicationDelegate
{
  TabBarController tabBarController;
  // This method is invoked when the application has loaded its UI and its ready to run
  public override bool FinishedLaunching (UIApplication app, NSDictionary options)
  {
     // Create the tabs
      tabBarController = new TabBarController ();
      tabBarController.MoreNavigationController.Delegate = new MoreNavigationControllerDelegate();
   
     // Create the main window and add the navigation controller as a subview
      window = new UIWindow (UIScreen.MainScreen.Bounds);
      window.AddSubview(tabBarController.View);
      window.MakeKeyAndVisible ();
      return true;
  }

  // This method is required in iPhoneOS 3.0
  public override void OnActivated (UIApplication application)
  {
  }
}
 
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Add a new class &quot;MoreNavigationControllerDelegate&quot; to the project.&lt;/li&gt;
&lt;li&gt;This class should implement &quot;UINavigationControllerDelegate&quot;.&lt;/li&gt;
&lt;li&gt;Add an override method &amp;nbsp;&quot;WillShowViewController&quot; to this class - This method is called whenever its time to load the MoreNavigation view controller.&lt;/li&gt;
&lt;li&gt;Set the RightBarButtonItem to null in this method.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;The following code in &quot;WillShowViewController&quot; method will hide &quot;Edit&quot; button in the &quot;More&quot; controller of UITabBarController.&lt;/div&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;public class MoreNavigationControllerDelegate : UINavigationControllerDelegate
 {
  public MoreNavigationControllerDelegate () : base()
  {
  }
  
  public override void WillShowViewController (UINavigationController navigationController, UIViewController viewController, bool animated)
  {
   if(navigationController.NavigationBar.TopItem.Title == &quot;More&quot;)
    navigationController.NavigationBar.TopItem.RightBarButtonItem = null;
  }
 }
&lt;/pre&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiziZQi-FitWJhp-_-SiD0DudcjsnuVSKg1owpmETpTIA6g1zeOZNnBRiuky-_Ot4xpbQOS0CvPhjjmPvvWJf6_IMEK7VEKqZqtlug4Vhk0H8ERZweq-erfV8fV2utm9Z5MaC0RObMLaXBg/s1600/Screen+shot+2011-02-01+at+11.28.16+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiziZQi-FitWJhp-_-SiD0DudcjsnuVSKg1owpmETpTIA6g1zeOZNnBRiuky-_Ot4xpbQOS0CvPhjjmPvvWJf6_IMEK7VEKqZqtlug4Vhk0H8ERZweq-erfV8fV2utm9Z5MaC0RObMLaXBg/s400/Screen+shot+2011-02-01+at+11.28.16+AM.png&quot; width=&quot;275&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Note- I have the condition if(navigationController.NavigationBar.TopItem.Title == &quot;More&quot;), since I still want to show the right bar button when I select the &quot;Motivation&quot;, &quot;Tips&quot; and &quot;Glossary&quot; view controller as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZBDYNCJEgxCJkBv4_uZAo_a8iuUG-5l-KKGUE0Buocw6nf1tpezBHQwfL4NsK35GH-CDWTqw0WmKOaksi2XAMlLRg6I_5yWnCDGQK3aC6SWtVEtEpXBWfN6rP-ICnhpwvMl9vv4boSrHr/s1600/Screen+shot+2011-02-01+at+11.35.29+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZBDYNCJEgxCJkBv4_uZAo_a8iuUG-5l-KKGUE0Buocw6nf1tpezBHQwfL4NsK35GH-CDWTqw0WmKOaksi2XAMlLRg6I_5yWnCDGQK3aC6SWtVEtEpXBWfN6rP-ICnhpwvMl9vv4boSrHr/s400/Screen+shot+2011-02-01+at+11.35.29+AM.png&quot; width=&quot;263&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/237523118447495935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2011/02/hide-right-baredit-button-of.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/237523118447495935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/237523118447495935'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2011/02/hide-right-baredit-button-of.html' title='Hide Right Bar(EDIT) Button of MoreNavigationController of a UITabBarController using Monotouch'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX2EEk3t0fc5WqtKcUlT2Tn1KGZVDDMyAHtDEjjh_7zcNrM9cuI8a-Z-qOnOu4TwsEMyj6Oa4wZm_VQHcwBeKjYC2stlnC-iroCupFAGEkSWgJ1qj5I4Qw8lGJy62q81Cl_jesk7msf_-N/s72-c/Screen+shot+2011-02-01+at+10.07.23+AM.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-3628421266316652932</id><published>2010-12-09T09:16:00.000-08:00</published><updated>2010-12-09T09:46:01.714-08:00</updated><title type='text'>Monotouch - Set custom RGB colors.</title><content type='html'>If you have a custom color with its corresponding RGB values, you can create a new UIColor variable by using the following code.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;   float red = 0.0f;           // Defines the red component of the color object. This range is from 0.0f to 255.0f
   float green = 255.0f;       // Defines the green component of the color object. This range is from 0.0f to 255.0f
   float blue = 0.0f;          // Defines the blue component of the color object. This range is from 0.0f to 255.0f
   float alpha = 1.0f;         // Defines the opacity value of the color object. This range is from 0.0f to 1.0f

   UIColor newColor = new UIColor(red/255.0f, green/255.0f, blue/255.0f, alpha);
 
&lt;/pre&gt;&lt;br /&gt;
Following website is helpful if you are looking for RGB values for a color.&lt;br /&gt;
&lt;a href=&quot;http://www.colorschemer.com/online.html&quot;&gt;http://www.colorschemer.com/online.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/3628421266316652932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2010/12/monotouch-set-custom-rgb-colors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/3628421266316652932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/3628421266316652932'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2010/12/monotouch-set-custom-rgb-colors.html' title='Monotouch - Set custom RGB colors.'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-5378414845503706854</id><published>2010-11-10T16:47:00.000-08:00</published><updated>2010-11-10T16:47:02.875-08:00</updated><title type='text'>Delete Table Cells from UITableView in Monotouch</title><content type='html'>I came across a blog entry with a video to show how this is done. &lt;br /&gt;
Here is the &lt;a href=&quot;http://www.alexyork.net/blog/post/Deleting-cells-from-a-UITableView-with-MonoTouch.aspx&quot;&gt;link&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/5378414845503706854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2010/11/delete-table-cells-from-uitableview-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/5378414845503706854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/5378414845503706854'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2010/11/delete-table-cells-from-uitableview-in.html' title='Delete Table Cells from UITableView in Monotouch'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-6833620532635078863</id><published>2010-10-04T12:27:00.000-07:00</published><updated>2011-02-07T13:23:56.858-08:00</updated><title type='text'>Windows 7 phone developers launch</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;October 12th is Windows 7 phone developers launch.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Click on the banner to learn more.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://www.msdnevents.com/wp7devlaunch/&quot;&gt; &lt;img border=&quot;0&quot; height=&quot;45&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAS0DpuE7TyXJKtoeAz8CFrUfG-7dGfRKYaw3AKzCN09YPNFGSlwTKqBChXhlEin1uINkYOnzUO3-iKL1qxTo3ReArN0lS9azsenZowmySlKg833fJhotYDaJb-t37CV64nYBpuenetd8B/s400/wp7_signature_banner_lg.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;iframe align=&quot;left&quot; frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://rcm.amazon.com/e/cm?t=apps09-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=1935182471&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr&quot; style=&quot;align: left; height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/6833620532635078863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2010/10/windows-7-phone-developers-launch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/6833620532635078863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/6833620532635078863'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2010/10/windows-7-phone-developers-launch.html' title='Windows 7 phone developers launch'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAS0DpuE7TyXJKtoeAz8CFrUfG-7dGfRKYaw3AKzCN09YPNFGSlwTKqBChXhlEin1uINkYOnzUO3-iKL1qxTo3ReArN0lS9azsenZowmySlKg833fJhotYDaJb-t37CV64nYBpuenetd8B/s72-c/wp7_signature_banner_lg.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-6061527681812312493</id><published>2010-09-01T11:46:00.000-07:00</published><updated>2011-03-31T08:11:22.619-07:00</updated><title type='text'>Pass Custom UDT types to Oracle Stored Procedure using ODP.NET</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&lt;i&gt;Introduction:&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;I came  across a situation where I have a list of .Net custom objects and I want to pass  this list to an Oracle procedure to process them. I did not want to loop through  and update each record as I wanted to reduce the number of network round trips.  And I found the following way to accomplish this. I had to create a User Defined  Type (UDT) / Custom Type in Oracle that represents my .Net Object and another  UDT as a table of these objects. Then I used ODP.Net to map between my .Net  Custom Objects to Oracle UDT types&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&lt;i&gt;Prerequisites&lt;/i&gt;: &lt;/span&gt;ODP.NET 11g, Visual Studio 2005 / 2008 / 2010&lt;br /&gt;
&lt;br /&gt;
Following are the UDT declarations in Oracle&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;----------------------------------------------------------------
create or replace type &quot;COMPANYINFO&quot; AS OBJECT
(
    CompanyId     varchar2(15),
    CompanyName   varchar2(50),
    Address1      varchar2(100),
    Address2      varchar2(100),
    City          varchar2(20),
    State         varchar2(20),
    Zip           varchar2(10),
    Country       varchar2(20)
);
   
create or replace type &quot;COMPANYINFOLIST&quot; is table of COMPANYINFO;
----------------------------------------------------------------&lt;/pre&gt;&lt;br /&gt;
Procedure is defined as&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;----------------------------------------------------------------
procedure GetCompanyInfoArray(companyInfoList in COMPANYINFOLIST, resultCursor out sys_refcursor) is
 results stringSet;
 compName varchar2(100);
 begin
      if companyInfoList.count &amp;gt; 0 then
         results := stringSet();
          for i in companyInfoList.first .. companyInfoList.last
          loop 
           -- dbms_output.put_line(companyInfoList(i).companyId);              
              results.extend(1);
              results(results.count) := companyInfoList(i).companyName;  
          end loop;                   
      end if;  
      
      open resultCursor for
            select column_value as compName from table(cast (results as stringSet));
 end;
----------------------------------------------------------------
&lt;/pre&gt;Following type is used by the procedure to add company names back to the return cursor&lt;br /&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;----------------------------------------------------------------
CREATE OR REPLACE TYPE &quot;STRINGSET&quot; is table of varchar(32000);
----------------------------------------------------------------
&lt;/pre&gt;&lt;br /&gt;
Open Visual Studio and create a new sample project &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&quot;&lt;/span&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;OracleUDTSample&lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&quot;&lt;/span&gt;&lt;br /&gt;
Add reference to &lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;Oracle.DataAccess.dll&lt;/span&gt;&lt;/i&gt; to the project. This dll is located in oracle home directory as shown.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgypKI5l9asnrVg6EgYqYrCRcEjBpUmU62hrykk0wFnXL1aSzy_5AK2CdjN9H5yTWTSdu3-guvmCI-UAI8RXEeWxLmnzWZ9Z7T67Kl4798PsH8zuLFVcrE6mJBQa9PPV_mSvPs0EfEmLIZn/s1600/ScreenShot1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgypKI5l9asnrVg6EgYqYrCRcEjBpUmU62hrykk0wFnXL1aSzy_5AK2CdjN9H5yTWTSdu3-guvmCI-UAI8RXEeWxLmnzWZ9Z7T67Kl4798PsH8zuLFVcrE6mJBQa9PPV_mSvPs0EfEmLIZn/s640/ScreenShot1.JPG&quot; width=&quot;496&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTKwUglRsES9xNMt3FFv55vWxUNgwomm0iyf_vjaaXej9h2fZtLFEXhC_vwqtMAURWQ-NN78VwkcKlkUKBWVd4Xjoq3qAF0eVsakqsEt-9PvAp_Gg9L1QcDiZhZzWvNPqG3Tc44CVLyU2D/s1600/ScreenShot2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;317&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTKwUglRsES9xNMt3FFv55vWxUNgwomm0iyf_vjaaXej9h2fZtLFEXhC_vwqtMAURWQ-NN78VwkcKlkUKBWVd4Xjoq3qAF0eVsakqsEt-9PvAp_Gg9L1QcDiZhZzWvNPqG3Tc44CVLyU2D/s400/ScreenShot2.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Add following classes to the project&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&lt;i&gt;CompanyInfo&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black;&quot;&gt; -&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;This&amp;nbsp;class to represent Oracle type &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&lt;i&gt;&quot;COMPANYINFO&quot;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;This class needs to inherit following interfaces -&amp;nbsp;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;INullable, IOracleCustomType&lt;/span&gt;&lt;/i&gt;. Implement the &lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;INullable &lt;/span&gt;&lt;/i&gt;method &lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;IsNull &lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&amp;nbsp;&lt;/span&gt;and &lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;IOracleCustomType &lt;/span&gt;&lt;/i&gt;methods&amp;nbsp;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;FromCustomObject, ToCustomObject&lt;/span&gt;.&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;CompanyInfoFactory &lt;/span&gt;- &lt;/i&gt;This class is required by ODP.NET to create custom objects that represent oracle custom objects and collections. This should implement &lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;IOracleCustomTypeFactory&lt;/span&gt;&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;CompanyInfoList &lt;/span&gt;-&lt;/i&gt;This class to represent Oracle type&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt; &quot;&lt;/span&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;COMPANYINFOLIST&lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&quot;&lt;/span&gt;&lt;i&gt;. &lt;/i&gt;This type is used to pass a list of &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;COMPANYINFO&lt;/span&gt; objects. This class also implements&amp;nbsp;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;INullable, IOracleCustomType &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;interfaces. This class has an &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;array of CompanyInfo &lt;/span&gt;property to capture the &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;CompanyInfo &lt;/span&gt;object list.&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;CompanyInfoListFactory &lt;/span&gt;-&amp;nbsp;&lt;/i&gt;This class is required by ODP.NET to create custom objects that represent oracle custom objects and collections. This should also implement&amp;nbsp;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;OracleCustomTypeFactory&lt;/span&gt;&lt;/i&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.DataAccess.Types;

namespace OracleUDTSample
{
    /* CompanyInfo Class
    **   An instance of a CompanyInfo class represents an CompanyInfo object
    **   A custom type must implement INullable and IOracleCustomType interfaces
    */
    public class CompanyInfo : INullable, IOracleCustomType
    {
        private bool objectIsNull;

        [OracleObjectMappingAttribute(&quot;COMPANYID&quot;)]
        public string CompanyId { get; set; }
        
        [OracleObjectMappingAttribute(&quot;COMPANYNAME&quot;)]
        public string CompanyName { get; set; }

        [OracleObjectMappingAttribute(&quot;ADDRESS1&quot;)]
        public string Address1 { get; set; }

        [OracleObjectMappingAttribute(&quot;ADDRESS2&quot;)]
        public string Address2 { get; set; }

        [OracleObjectMappingAttribute(&quot;CITY&quot;)]
        public string City { get; set; }

        [OracleObjectMappingAttribute(&quot;STATE&quot;)]
        public string State { get; set; }

        [OracleObjectMappingAttribute(&quot;ZIP&quot;)]
        public string Zip { get; set; }

        [OracleObjectMappingAttribute(&quot;COUNTRY&quot;)]
        public string Country { get; set; }

        public static CompanyInfo Null
        {
            get
            {
                CompanyInfo company = new CompanyInfo();
                company.objectIsNull = true;
                return company;
            }
        }

        #region INullable Members

        public bool IsNull
        {
            get { return objectIsNull; }
        }

        #endregion

        #region IOracleCustomType Members

        public void FromCustomObject(Oracle.DataAccess.Client.OracleConnection con, IntPtr pUdt)
        {
            // Convert from the Custom Type to Oracle Object
            if (!string.IsNullOrEmpty(CompanyId))
            {
                OracleUdt.SetValue(con, pUdt, &quot;COMPANYID&quot;, CompanyId);
            }
            if (!string.IsNullOrEmpty(CompanyName))
            {
                OracleUdt.SetValue(con, pUdt, &quot;COMPANYNAME&quot;, CompanyName);
            }
            if (!string.IsNullOrEmpty(Address1))
            {
                OracleUdt.SetValue(con, pUdt, &quot;ADDRESS1&quot;, Address1);
            }
            if (!string.IsNullOrEmpty(Address2))
            {
                OracleUdt.SetValue(con, pUdt, &quot;ADDRESS2&quot;, Address2);
            }
            if (!string.IsNullOrEmpty(City))
            {
                OracleUdt.SetValue(con, pUdt, &quot;CITY&quot;, City);
            }
            if (!string.IsNullOrEmpty(State))
            {
                OracleUdt.SetValue(con, pUdt, &quot;STATE&quot;, State);
            }
            if (!string.IsNullOrEmpty(Zip))
            {
                OracleUdt.SetValue(con, pUdt, &quot;ZIP&quot;, Zip);
            }
            if (!string.IsNullOrEmpty(Country))
            {
                OracleUdt.SetValue(con, pUdt, &quot;COUNTRY&quot;, Country);
            }

        }

        public void ToCustomObject(Oracle.DataAccess.Client.OracleConnection con, IntPtr pUdt)
        {
            CompanyId = (string)OracleUdt.GetValue(con, pUdt, &quot;COMPANYID&quot;);
            CompanyName = (string)OracleUdt.GetValue(con, pUdt, &quot;COMPANYNAME&quot;);
            Address1 = (string)OracleUdt.GetValue(con, pUdt, &quot;ADDRESS1&quot;);
            Address2 = (string)OracleUdt.GetValue(con, pUdt, &quot;ADDRESS2&quot;);
            City = (string)OracleUdt.GetValue(con, pUdt, &quot;CITY&quot;);
            State = (string)OracleUdt.GetValue(con, pUdt, &quot;STATE&quot;);
            Zip = (string)OracleUdt.GetValue(con, pUdt, &quot;ZIP&quot;);
            Country = (string)OracleUdt.GetValue(con, pUdt, &quot;COUNTRY&quot;);
        }

        #endregion

    }

    [OracleCustomTypeMappingAttribute(&quot;DATABASE_SCHEMA_NAME.COMPANYINFO&quot;)]
    public class CompanyInfoFactory : IOracleCustomTypeFactory
    {
        #region IOracleCustomTypeFactory Members

        public IOracleCustomType CreateObject()
        {
            return new CompanyInfo();
        }

        #endregion
    }


   
   /* CompanyInfoList Class
   **   An instance of a CompanyInfoList class represents an CompanyInfoList object
   **   A custom type must implement INullable and IOracleCustomType interfaces
   */
    public class CompanyInfoList : INullable, IOracleCustomType
    {
        [OracleArrayMapping()]
        public CompanyInfo[] CompanyInfoArray;

        private bool objectIsNull;

        #region INullable Members

        public bool IsNull
        {
            get { return objectIsNull; }
        }

        public static CompanyInfoList Null
        {
            get
            {
                CompanyInfoList obj = new CompanyInfoList();
                obj.objectIsNull = true;
                return obj;
            }
        }

        #endregion

        #region IOracleCustomType Members

        public void FromCustomObject(Oracle.DataAccess.Client.OracleConnection con, IntPtr pUdt)
        {
            OracleUdt.SetValue(con, pUdt, 0, CompanyInfoArray);
        }

        public void ToCustomObject(Oracle.DataAccess.Client.OracleConnection con, IntPtr pUdt)
        {
            CompanyInfoArray = (CompanyInfo[])OracleUdt.GetValue(con, pUdt, 0);
        }

        #endregion
    }

    [OracleCustomTypeMapping(&quot;DATABASE_SCHEMA_NAME.COMPANYINFOLIST&quot;)]
    public class CompanyInfoListFactory :  IOracleCustomTypeFactory, IOracleArrayTypeFactory
    {
        #region IOracleCustomTypeFactory Members
        public IOracleCustomType CreateObject()
        {
            return new CompanyInfoList();
        }

        #endregion

        #region IOracleArrayTypeFactory Members
        public Array CreateArray(int numElems)
        {
            return new CompanyInfo[numElems];
        }

        public Array CreateStatusArray(int numElems)
        {
            return null;
        }

        #endregion
    }
}
&lt;/pre&gt;&lt;br /&gt;
Add new class DBAccess to add the database handling code. In this class we add &lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;CreateCustomTypeArrayInputParameter &lt;/span&gt;&lt;/i&gt;method to create our new OracleParameter to pass User Defined Type to Oracle. Make sure to add the following using statements - &lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;using Oracle.DataAccess.Client&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;using Oracle.DataAccess.Types&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

namespace OracleUDTSample
{
    public class DBAccess : IDisposable
    {
        OracleConnection connection;
        public OracleCommand CreateCommand(string sql, CommandType type, params OracleParameter[] parameters)
        {
            connection = new OracleConnection(&quot;Data Source=database_name;User ID=userid;Password=pwd;Pooling=true;Connection Lifetime=600;Max Pool Size=10;Min Pool Size=0&quot;);
            connection.Open();
            OracleCommand command = new OracleCommand(sql, connection);
            command.CommandType = type;
            if (parameters != null &amp;amp;&amp;amp; parameters.Length &amp;gt; 0)
            {
                OracleParameterCollection cmdParams = command.Parameters;
                for (int i = 0; i &amp;lt; parameters.Length; i++) { cmdParams.Add(parameters[i]); }
            }
            return command;
        }

        public OracleDataReader GetDataReader(string storedProcedure, params OracleParameter[] parameters)
        {
            return CreateCommand(storedProcedure, CommandType.StoredProcedure, parameters).ExecuteReader();
        }

        public static OracleParameter CreateCursorParameter(string name)
        {
            OracleParameter prm = new OracleParameter(name, OracleDbType.RefCursor);
            prm.Direction = ParameterDirection.Output;
            return prm;
        }

        /*
         * Create this parameter when you want to pass Oracle User-Defined Type (Custom Type) which is table of Oracle User-Defined Types.                  
         * This way you can pass mutiple records at once.
         * 
         * Parameters:
         * name - Name of the UDT Parameter name in the Stored Procedure.
         * oracleUDTName - Name of the Oracle User Defined Type with Schema Name. (Make sure this is all caps. For ex: DESTINY.COMPANYINFOLIST)
         * 
         * */
        public static OracleParameter CreateCustomTypeArrayInputParameter&amp;lt;t&amp;gt;(string name, string oracleUDTName, T value) where T : IOracleCustomType, INullable
        {
            OracleParameter parameter = new OracleParameter();
            parameter.ParameterName = name;
            parameter.OracleDbType = OracleDbType.Array;
            parameter.Direction = ParameterDirection.Input;
            parameter.UdtTypeName = oracleUDTName;
            parameter.Value = value;
            return parameter;
        }

        #region IDisposable Members

        public void Dispose()
        {
            if (connection != null)
                connection = null;
        }

        #endregion
    }
}
&lt;/pre&gt;&lt;br /&gt;
Create a new &lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;CompanyInfoInterface &lt;/span&gt;&lt;/i&gt;class which defines a method &lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;GetCompanyInfo&lt;/span&gt;&lt;/i&gt;. This method is creates the procedure parameters and calls the procedure using the &lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;DBAccess &lt;/span&gt;&lt;/i&gt;class.&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;public class CompanyInfoInterface
{
   #region Constants
   private const string procName = &quot;Package_Name.GetCompanyInfoArray&quot;;
   #endregion

   public static List&amp;lt;string&amp;gt; GetCompanyinfo(List&amp;lt;companyinfo&amp;gt; companyList)
   {
     List&amp;lt;string&amp;gt; companyNames = new List&amp;lt;string&amp;gt;();
     CompanyInfoList companyInfoList = new CompanyInfoList();
     companyInfoList.CompanyInfoArray = companyList.ToArray();

     using (DBAccess context = new DBAccess())
     {
         try
         {
            OracleParameter[] parameters = new OracleParameter[2];
            parameters[0] = DBAccess.CreateCustomTypeArrayInputParameter&amp;lt;companyinfolist&amp;gt;(&quot;companyInfoList&quot;, &quot;DATABASE_SCHEMA.COMPANYINFOLIST&quot;, companyInfoList);
            parameters[1] = DBAccess.CreateCursorParameter(&quot;resultCursor&quot;);
            using (OracleDataReader dr = context.GetDataReader(procName, parameters))
            {
               while (dr.Read())
               {
                 companyNames.Add(dr.IsDBNull(0) ? string.Empty : dr.GetString(0));
               }
           }
         }
         catch
         {
           throw;
         }
         return companyNames;
     }
   }
 }
&lt;/pre&gt;Finally the Test class&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;public class Test
{
    static void Main(string[] args)
    {
       List&amp;lt;CompanyInfo&amp;gt; companyList = new List&amp;lt;CompanyInfo&amp;gt;();
       CompanyInfo company1 = new CompanyInfo();
       company1.CompanyId = &quot;AAA&quot;;
       company1.CompanyName = &quot;Sample Company 1&quot;;
       company1.Address1 = &quot;123 West Washington&quot;;
       company1.Address2 = &quot;Suite 200&quot;;
       company1.City = &quot;Chicago&quot;;
       company1.State = &quot;IL&quot;;
       company1.Zip = &quot;60606&quot;;
       company1.Country = &quot;USA&quot;;
       companyList.Add(company1);

       company1 = new CompanyInfo();
       company1.CompanyId = &quot;BBB&quot;;
       company1.CompanyName = &quot;Sample Company 2&quot;;
       company1.Address1 = &quot;990 West Jackson&quot;;
       company1.Address2 = &quot;Suite 1000&quot;;
       company1.City = &quot;Chicago&quot;;
       company1.State = &quot;IL&quot;;
       company1.Zip = &quot;60606&quot;;
       company1.Country = &quot;USA&quot;;

       companyList.Add(company1);
       List&amp;lt;string&amp;gt; result = CompanyInfoInterface.GetCompanyinfo(companyList);

       string val = result.Where(c =&amp;gt; c == &quot;Sample Company 2&quot;).SingleOrDefault&amp;lt;string&amp;gt;();
       Console.WriteLine(val);
       Console.ReadLine();
   }
}
&lt;/pre&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/6061527681812312493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2010/09/pass-custom-udt-types-to-oracle-stored.html#comment-form' title='39 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/6061527681812312493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/6061527681812312493'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2010/09/pass-custom-udt-types-to-oracle-stored.html' title='Pass Custom UDT types to Oracle Stored Procedure using ODP.NET'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgypKI5l9asnrVg6EgYqYrCRcEjBpUmU62hrykk0wFnXL1aSzy_5AK2CdjN9H5yTWTSdu3-guvmCI-UAI8RXEeWxLmnzWZ9Z7T67Kl4798PsH8zuLFVcrE6mJBQa9PPV_mSvPs0EfEmLIZn/s72-c/ScreenShot1.JPG" height="72" width="72"/><thr:total>39</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-9101988320313367972</id><published>2010-07-25T11:12:00.000-07:00</published><updated>2010-08-31T13:51:59.702-07:00</updated><title type='text'>Disable Edit Button on &quot;More&quot; tab of UITabBarController using Monotouch</title><content type='html'>Today I will show you how to disable the Edit button on &quot;More&quot; tab of UITabBarController.&lt;br /&gt;
Following screen shot displays a tab bar controller displaying &quot;More&quot; tab with 2 items and an edit button on top right side of navigation bar.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmv1IWI0qKTAGXthQtmIE8zQnNddRfAtN-xQyATivlfPtUVLEd4FRGBJOasanrqav9CId1Nl8vKndSKkTtiwC8GXsC89slfO2um5aoviMyTZqOEKx3kc7wm5Bu4cL87mHRV_aY9g2yg0zU/s1600/Screen+shot+2010-07-25+at+12.52.11+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmv1IWI0qKTAGXthQtmIE8zQnNddRfAtN-xQyATivlfPtUVLEd4FRGBJOasanrqav9CId1Nl8vKndSKkTtiwC8GXsC89slfO2um5aoviMyTZqOEKx3kc7wm5Bu4cL87mHRV_aY9g2yg0zU/s400/Screen+shot+2010-07-25+at+12.52.11+PM.png&quot; width=&quot;266&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Clicking the button brings up a configure view where all the tabs are displayed and can be moved around as shown below.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj95Fa84vTQix-trLOE901nNoLwGs8BbWxhtFfvuP5uetdymhOeRUNPpwlafbTcMgyajLKq4-H0DRv4deTGCot65RJ-njd0Myv8sNxAFHyTHGIdHq1V33jJC6nifJttqP1JC8SbudhRzOY6/s1600/Screen+shot+2010-07-25+at+12.52.54+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj95Fa84vTQix-trLOE901nNoLwGs8BbWxhtFfvuP5uetdymhOeRUNPpwlafbTcMgyajLKq4-H0DRv4deTGCot65RJ-njd0Myv8sNxAFHyTHGIdHq1V33jJC6nifJttqP1JC8SbudhRzOY6/s400/Screen+shot+2010-07-25+at+12.52.54+PM.png&quot; width=&quot;262&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Adding the following code in&amp;nbsp;ViewDidLoad()&amp;nbsp;method &amp;nbsp;of your UITabBarController class removes the items from the &quot;Configure&quot; view.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;brush: csharp&quot;&gt;/* */
this.CustomizableViewControllers = null;
/* */
&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikjx33rU4_Q6P4h4nP-5A4zMwPyTHzma81AgdIo8IJ4mUkWqljcqWjIzbZ9vT9PSu4zdXqAt3-E8mS1i0a6nXLlUEavpZhaWm4MXDfY-Z0VgmjYnv0hhtKd2vgmaE8V1-st8t3eaNQSOzW/s1600/Screen+shot+2010-07-25+at+12.53.26+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikjx33rU4_Q6P4h4nP-5A4zMwPyTHzma81AgdIo8IJ4mUkWqljcqWjIzbZ9vT9PSu4zdXqAt3-E8mS1i0a6nXLlUEavpZhaWm4MXDfY-Z0VgmjYnv0hhtKd2vgmaE8V1-st8t3eaNQSOzW/s400/Screen+shot+2010-07-25+at+12.53.26+PM.png&quot; width=&quot;263&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Adding the following code in&amp;nbsp;ViewDidLoad()&amp;nbsp;method &amp;nbsp;of your UITabBarController class disables the &quot;Edit&quot; button.&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;brush: csharp&quot;&gt;/* */
this.MoreNavigationController.NavigationBar.TopItem.RightBarButtonItem.Enabled = false;
/* */
&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0wkd44pWO2Z9Z5wdVf0MfySih3IFEvh75-xr2E3xvVp07GOBDtchb1DJli1pSwLfzbeuBt0ict3vmwPkfrRqJ8dLmDzN56RnDBathS-M6W9jc2Og6PPHbL7Ve5jRzwOPNUYBM5CIhzzsP/s1600/Screen+shot+2010-07-25+at+12.53.54+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0wkd44pWO2Z9Z5wdVf0MfySih3IFEvh75-xr2E3xvVp07GOBDtchb1DJli1pSwLfzbeuBt0ict3vmwPkfrRqJ8dLmDzN56RnDBathS-M6W9jc2Og6PPHbL7Ve5jRzwOPNUYBM5CIhzzsP/s400/Screen+shot+2010-07-25+at+12.53.54+PM.png&quot; width=&quot;265&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/9101988320313367972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2010/07/disable-edit-button-on-more-tab-of.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/9101988320313367972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/9101988320313367972'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2010/07/disable-edit-button-on-more-tab-of.html' title='Disable Edit Button on &quot;More&quot; tab of UITabBarController using Monotouch'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmv1IWI0qKTAGXthQtmIE8zQnNddRfAtN-xQyATivlfPtUVLEd4FRGBJOasanrqav9CId1Nl8vKndSKkTtiwC8GXsC89slfO2um5aoviMyTZqOEKx3kc7wm5Bu4cL87mHRV_aY9g2yg0zU/s72-c/Screen+shot+2010-07-25+at+12.52.11+PM.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-3100421456477080656</id><published>2010-07-19T20:02:00.000-07:00</published><updated>2010-09-02T08:05:54.741-07:00</updated><title type='text'>Hide iPhone tabbar using Monotouch C#</title><content type='html'>I will show here how to hide a tab bar for a view which is part of a tab bar controller.&lt;br /&gt;
I have a tab bar app which has 3 tabs(News, Account, Map)&lt;br /&gt;
Account tab has a table view containing 3 cells(Id Card, Meal Plan, Academics),&lt;br /&gt;
Clicking on Id Card cell brings another view which displays an id card.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSZPzmWhRW9ZARoybE9cSBNpHkW7PbRyRbqOyHkcwfdNtZp55Oov9HZBbkCJAc2JtfB192hxt6yjno10uBaiQwewRwef8nVuVtlG2wI74ruyjHWRhfppImslTl_VVVPKcUSEfjgNriroRY/s1600/Screen+shot+2010-07-19+at+9.24.43+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSZPzmWhRW9ZARoybE9cSBNpHkW7PbRyRbqOyHkcwfdNtZp55Oov9HZBbkCJAc2JtfB192hxt6yjno10uBaiQwewRwef8nVuVtlG2wI74ruyjHWRhfppImslTl_VVVPKcUSEfjgNriroRY/s400/Screen+shot+2010-07-19+at+9.24.43+PM.png&quot; width=&quot;262&quot; /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-text-decorations-in-effect: none; color: black;&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBpAFT3o0cwVIZpl7cZrq5-NIA8lrJvd_jPLW_cQyKhPaU39PZvHbB5FpeBl9dGVhsJF-yfwq8wj3FP7Fn_ALeMAYV4zpeP9L4Q19cqYF_ceUUrtXQ3Zfp-aylDLbk2nCXgHjiZFDrRzTm/s1600/Screen+shot+2010-07-19+at+9.40.52+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBpAFT3o0cwVIZpl7cZrq5-NIA8lrJvd_jPLW_cQyKhPaU39PZvHbB5FpeBl9dGVhsJF-yfwq8wj3FP7Fn_ALeMAYV4zpeP9L4Q19cqYF_ceUUrtXQ3Zfp-aylDLbk2nCXgHjiZFDrRzTm/s400/Screen+shot+2010-07-19+at+9.40.52+PM.png&quot; width=&quot;267&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;We will remove tab bar from the bottom of the Id Card view like shown below.&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSzg7e5HY5Ldd3thBsGVA0-FUAQt1segTMSSQt9Pc-ydprXAOAIPAVKmUj22pwivfTPtDPaN3MthezQnenctSsiZTjlMnIz4SvGNwN_C6Il8CfuBdQqZq-vAf0hUeA6T0Boi9BQ0LgB6zh/s1600/Screen+shot+2010-07-19+at+9.40.25+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSzg7e5HY5Ldd3thBsGVA0-FUAQt1segTMSSQt9Pc-ydprXAOAIPAVKmUj22pwivfTPtDPaN3MthezQnenctSsiZTjlMnIz4SvGNwN_C6Il8CfuBdQqZq-vAf0hUeA6T0Boi9BQ0LgB6zh/s1600/Screen+shot+2010-07-19+at+9.40.25+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSzg7e5HY5Ldd3thBsGVA0-FUAQt1segTMSSQt9Pc-ydprXAOAIPAVKmUj22pwivfTPtDPaN3MthezQnenctSsiZTjlMnIz4SvGNwN_C6Il8CfuBdQqZq-vAf0hUeA6T0Boi9BQ0LgB6zh/s400/Screen+shot+2010-07-19+at+9.40.25+PM.png&quot; width=&quot;266&quot; /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Lets look at the two classes associated with the parent(Account), child(Id Card) view.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;StudentAccountController - This class brings the table view for the account tab and the cells associated with the view.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;StudentIdController - This class brings the Id Card view.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;In the RowSelected() method of Delegate class of StudentAccountController, the StudentIdController is dynamically loaded.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Here we just need to set HidesBottomBarWhenPushed property of the child view to true.&lt;/div&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: csharp&quot;&gt;public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
    if(indexPath.Row == (int)itemIndex.IdCard)
    {
     StudentIdModalView studentIdVC = new StudentIdModalView();
     studentIdVC.HidesBottomBarWhenPushed = true;
     studentController.NavigationController.PushViewController(studentIdVC, true);
    }
 }
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/3100421456477080656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2010/07/hide-iphone-tabbar-using-monotouch-c.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/3100421456477080656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/3100421456477080656'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2010/07/hide-iphone-tabbar-using-monotouch-c.html' title='Hide iPhone tabbar using Monotouch C#'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSZPzmWhRW9ZARoybE9cSBNpHkW7PbRyRbqOyHkcwfdNtZp55Oov9HZBbkCJAc2JtfB192hxt6yjno10uBaiQwewRwef8nVuVtlG2wI74ruyjHWRhfppImslTl_VVVPKcUSEfjgNriroRY/s72-c/Screen+shot+2010-07-19+at+9.24.43+PM.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4160593805760028247.post-1052504959533079259</id><published>2010-07-18T09:19:00.000-07:00</published><updated>2010-07-19T07:14:37.347-07:00</updated><title type='text'>Reviewing Professional iPhone Programming with Monotouch and .NET/C#</title><content type='html'>Just got the latest book on iPhone programing with Monotouch.&amp;nbsp;Being a .Net/C# developer myself I&#39;m excited to learn and create iPhone apps using C#.&amp;nbsp;I would be adding some sample apps I create with Monotouch here.&lt;br /&gt;
&lt;div&gt;In the mean time you can get more information on this new book form Amazon. I have added the information below.&lt;br /&gt;
&lt;iframe align=&quot;left&quot; frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://rcm.amazon.com/e/cm?t=apps09-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=047063782X&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr&quot; style=&quot;align: left; height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appsjack.blogspot.com/feeds/1052504959533079259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://appsjack.blogspot.com/2010/07/reviewing-professional-iphone.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/1052504959533079259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4160593805760028247/posts/default/1052504959533079259'/><link rel='alternate' type='text/html' href='http://appsjack.blogspot.com/2010/07/reviewing-professional-iphone.html' title='Reviewing Professional iPhone Programming with Monotouch and .NET/C#'/><author><name>AppsDev</name><uri>http://www.blogger.com/profile/14798246692916701360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>